Вложенные Дженерики - PullRequest
       23

Вложенные Дженерики

3 голосов
/ 21 июня 2009

Я спрашивал об этом раньше, но не правильно понял вопрос, поэтому ответ был пропущен.

Если у меня есть метод, который возвращает ObservableColletion<T>, как бы я использовал его в другом универсальном методе.

Будет

method2<ObservableCollection<T>>(){} 

будет путь.

Я пытаюсь создать общий resultEventArgs, который будет передавать результаты запроса Ado.NET Dataservices всем подписчикам. Внутри этого я не хочу передавать строго типизированную коллекцию EntityCollection, которая возвращается [сгенерировано Ado.NET 1.5]

Так что да, мой вопрос сформулирован ObservableCollection, потому что я не хотел запутаться в путанице с устройствами данных ado.net.

Приветствие Dave

1 Ответ

4 голосов
/ 21 июня 2009

Это зависит; Вы хотите указать тип item или тип collection ? Если вы просто хотите указать элемент, то 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 при его вызове ... не очень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...