检查对象是否具有多类型参数的泛型
问题描述:
假设您有一个具有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<,,>);
。
这正是我第一步想要的。 – SaschaR
@SaschaR你能标记这个答案为接受吗? – Guillaume
是的。你对我的另一个问题有了一个想法吗? – SaschaR