我发现此问题: Is it possible to specify a generic constraint for a type parameter to be convertible FROM another type? 我正在寻找更智能的方法。委托方法参数从IEnumerable <T>到特定类型
Class A {
public A(string){}
}
Class foo
{
private List<A> content = new List<A>();
public void Add(A a){
content.Add(a);
}
public void Add(string str){
content.Add(new A(str));
}
public void AddRange<T>(IEnumerable<T> iterable) // where T : ???
{
foreach(T t in iterable)
content.Add((A)t); //Error
}
}
的错误是:
Cannot convert type 'T' to 'A'
问题:存在where T : ?
表达,如 “可转换”?
更新: 我有两个方法超载: Add(A)
和Add(string)
目前我尝试与T转换为A.但是我的主要问题是,我想使用不同Add
与T. 方法我需要的是这样的:
public void AddRange<T>(IEnumerable<T> iterable) where T : Add(T)
{
foreach (T t in iterable)
this.Add(t);
}
目前尚不清楚您尝试实现的目标。你不是只是想'在哪里T:A'? –
这是什么意思“可转换”? –
我想要添加两种不同的枚举类型:列表和列表。 –
Syrlia