2009-06-21 2 views
3

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

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

бы

method2<ObservableCollection<T>>(){} 

быть путь.

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

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

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

ответ

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 при вызове ... не очень.

+0

Marc, Принял это, поскольку он дает правду о сути и «где» я видел через MSDN. Это выглядит беспорядочно, но, несомненно, xplosion классов для каждого из моих 140 сущностей будет столь же болезненным. Если я изучаю это, я думаю, что могу сделать свой класс resultEventArgs полиморфным, насколько мне нужно. Альтернативой является принятие типа возврата и передача его сущности, а затем методы/свойства будут доступны, но я думаю, что тогда я плыву по некоторому изворотному пути. – DavidA

 Смежные вопросы

  • Нет связанных вопросов^_^