之前我曾问过这个问题,但我没有把问题说得对,所以错过了答案。
如果我有一个返回ObservableColletion<T>
的方法,我将如何在另一个通用方法中使用它。
会
method2<ObservableCollection<T>>(){}
是要走的路。
我正在尝试创建一个通用的resultEventArgs,它将Ado.NET Dataservices查询的结果传递给所有订阅者。在里面,我希望能够传递返回的强类型EntityCollection [Ado.NET 1.5生成]
所以是的,我的问题是措辞ObservableCollection
,因为我不想让整个ado.net dataservices混淆。
干杯 戴夫
答案 0 :(得分:4)
取决于;是否要指定项类型或集合类型?如果您只想指定项目,则T
仅与项目相关:
public ObservableCollection<T> SomeMethod<T>()
{
var data = new ObservableCollection<T>();
data.Add(default(T)); // or whatever
return data;
}
然后你可以使用ObservableCollection<Order> orders = SomeMethod<Order>()
等。如果你需要指定集合类型,你可能需要更多泛型类型......
public TList SomeMethod<TList, T>()
where TList : class, IList<T>, new()
{
var data = new TList();
data.Add(default(T)); // or whatever
return data;
}
但是,调用它比较棘手。除非列表是参数,否则它不能进行类型推断,这意味着在调用它时必须同时指定TList
和T
...不是很漂亮。