我想投一個WPF dataGrid
到ObservableCollection
的ItemSource
,但我不知道它的元素的類型,所以我想使用此代碼來獲取類型:如何使用ObservableCollection中的GetType返回的類型<T>?
var returnedType = dg.ItemsSource.AsQueryable().ElementType;
,並使用returnedType在這裏:
var sourceCollection = (ObservableCollection<???>)dg.ItemsSource;
更清楚,我想將它扔在ObservableCollection
,因爲我需要使用它的CollectionChanged
。而且,因爲我想在customizad DataGrid
使用它,我不能在這裏使用泛型類型。
這個問題是荒謬的。如果您在編譯時不知道項目類型,那麼您將如何在代碼中使用該未知類型的實例?我的意思是,你會在這一行中的點之後寫什麼:'sourceCollection [0] .'? – Dennis
我不熟悉WPF,但我不認爲你可以像這樣投下整個集合。你可以嘗試使用Cast <>'擴展方法。 – Tarec
@Tarec它取決於'ItemsSource'已經是'ObservableCollection'。如果是這樣,那麼鑄造到它已經有的類型是很好的。 (但是正如丹尼斯指出的那樣,如果你在編譯時不知道'T',那麼即使可能,演員也是無用的。)如果不是,那麼你是對的,演員會扔出一個例外。我懷疑後者是這種情況。 –
hvd