我發現此問題: 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