Ответ 1
Вам нужно использовать не общий тип System.Collections.IEnumerable
.
(обратите внимание на другое пространство имен)
Обратите внимание, что в .Net 4.0+ вы можете вместо этого использовать IEnumerable<object>
(из-за ковариации).
Я пытаюсь создать свойство, подобное официальному DataGrid.ItemsSource, из MSDN:
public IEnumerable ItemsSource { get; set; }
Это обеспечивает поддержку любого типа в любом производном классе. С этим я могу установить что-то вроде
var list = new List<ObservableCollection<KeyValuePair<decimal, bool>>>();
MyDataGrid.ItemsSource = list;
Но когда я пытаюсь сделать свойство IEnumerable без Type T, точно так же, как говорит MSDN, я получаю сообщение об ошибке в VisualStudio:
Using the generic type 'System.Collections.Generic.IEnumerable<T>' requires 1 type arguments
Итак, что не так?
Вам нужно использовать не общий тип System.Collections.IEnumerable
.
(обратите внимание на другое пространство имен)
Обратите внимание, что в .Net 4.0+ вы можете вместо этого использовать IEnumerable<object>
(из-за ковариации).