检查对象是否具有多类型参数的泛型

检查对象是否具有多类型参数的泛型

问题描述:

假设您有一个具有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(); 
} 

是否有人知道如何做到这一点?

如果你想知道的类型是否是一个通用的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