检查对象是否具有多个类型参数的泛型类型
本文关键字:类型参数 泛型类型 对象 是否 检查 | 更新日期: 2023-09-27 18:17:49
假设您有一个带有ItemsSource-Property (DataGrid.ItemsSource)的网格。此属性是在运行时期间设置的。一个可能的对象可以是:
public partial class InstantFeedbackCollectionViewModel<TEntity, TPrimaryKey, TUnitOfWork>
: InstantFeedbackCollectionViewModelBase<TEntity, TEntity, TPrimaryKey, TUnitOfWork>
稍后在运行时,我想捕获一个事件,并想检查网格的ItemsSource是否属于上述类型。
通常我会这样做:
if (typeof(datagrid.ItemsSource) is InstantFeedbackCollectionViewModel) then ...
但是我如何用这个泛型类做到这一点呢?
更新:在第二步中,我想在InstantFeedbackCollectionViewModel中执行一个方法。像这样:if (datagrid.ItemsSource.GetType().GetGenericTypeDefinition() == typeof(InstantFeedbackCollectionViewModel<,,>) {
var instFeedbackCollectionViewModel = grid.ItemsSource;
instFeedbackCollectionViewModel.ExecuteMyMethod();
}
有人知道怎么做吗?
如果您想知道类型是否为通用InstantFeedbackCollectionViewModel
,您可以使用此代码:
bool isInstantFeedbackCollectionViewModel =
datagrid.ItemsSource.GetType().GetGenericTypeDefinition() ==
typeof(InstantFeedbackCollectionViewModel<,,>);
如果您想知道类型是否继承自泛型InstantFeedbackCollectionViewModel
,请参阅检查类是否派生自泛型类