3

我以前问过这个问题,但我没有得到正确的问题,所以错过了答案。

如果我有一个返回方法的方法,ObservableColletion<T>那么我将在另一个通用方法中使用它。

method2<ObservableCollection<T>>(){} 

是要走的路。

我正在尝试制作一个通用的 resultEventArgs,它将 Ado.NET Dataservices 查询的结果传递给所有订阅者。在里面,我希望能够传递返回的强类型 EntityCollection [Ado.NET 1.5 生成]

所以是的,我的问题措辞是ObservableCollection因为我不想让整个 ado.net 数据服务混乱。

干杯戴夫

4

1 回答 1

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>()etc. 如果你需要指定集合类型,你可能需要更多的泛型类型......

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在调用它时......不漂亮。

于 2009-06-21T14:24:40.943 回答