2015-10-15 226 views
0

假設您有一個具有ItemsSource-屬性(DataGrid.ItemsSource)的網格。該屬性在運行時已設置。一個可能的對象可以是以下幾點:檢查對象是否具有多類型參數的泛型

運行期間
public partial class InstantFeedbackCollectionViewModel<TEntity, TPrimaryKey, TUnitOfWork> 
    : InstantFeedbackCollectionViewModelBase<TEntity, TEntity, TPrimaryKey, TUnitOfWork> 

後來我要趕一個事件,並要檢查的網格的ItemsSource是否是類型以上。

通常我會做這樣的事情:

​​3210

但我怎麼能做到這一點與此泛型類?

UPDATE:

在第二步驟中,我想執行該InstantFeedbackCollectionViewModel的方法。類似的東西:

if (datagrid.ItemsSource.GetType().GetGenericTypeDefinition() == typeof(InstantFeedbackCollectionViewModel<,,>) { 
var instFeedbackCollectionViewModel = grid.ItemsSource; 
instFeedbackCollectionViewModel.ExecuteMyMethod(); 
} 

是否有人知道如何做到這一點?

回答

0

如果你想知道的類型是否是一個通用的InstantFeedbackCollectionViewModel您可以使用此代碼:如果你想知道的類型是否從一個普通的InstantFeedbackCollectionViewModel繼承再看看Check if a class is derived from a generic class

bool isInstantFeedbackCollectionViewModel = 
     datagrid.ItemsSource.GetType().GetGenericTypeDefinition() == 
     typeof(InstantFeedbackCollectionViewModel<,,>); 

+0

這正是我第一步想要的。 – SaschaR

+0

@SaschaR你能標記這個答案爲接受嗎? – Guillaume

+0

是的。你對我的另一個問題有了一個想法嗎? – SaschaR

相關問題