2013-07-17 22 views
10

Sto cercando di fare una proprietà come la DataGrid.ItemsSource ufficiale, da MSDN:proprietà IEnumerable senza tipo

public IEnumerable ItemsSource { get; set; } 

Questo fornisce il supporto di qualsiasi tipo, in qualsiasi classe derivata. Con questo, posso impostare qualcosa di simile

var list = new List<ObservableCollection<KeyValuePair<decimal, bool>>>(); 
MyDataGrid.ItemsSource = list; 

Ma quando provo a fare una proprietà di un IEnumerable senza il tipo T, esattamente come dice MSDN, ottengo un errore sul VisualStudio:

Using the generic type 'System.Collections.Generic.IEnumerable<T>' requires 1 type arguments 

Quindi, cosa c'è che non va?

risposta

16

È necessario utilizzare il tipo non generico System.Collections.IEnumerable.
(notare il diverso spazio dei nomi)

Si noti che in Net 4.0+, è possibile utilizzare IEnumerable<object> invece (a causa di covarianza).