假设您有一个带有ItemsSource-Property(DataGrid.ItemsSource)的Grid。此属性已在运行时设置。可能的对象如下:
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();
}
有人知道怎么做吗?
答案 0 :(得分:1)
如果您想知道该类型是否为通用InstantFeedbackCollectionViewModel
,您可以使用以下代码:
bool isInstantFeedbackCollectionViewModel =
datagrid.ItemsSource.GetType().GetGenericTypeDefinition() ==
typeof(InstantFeedbackCollectionViewModel<,,>);
如果您想知道该类型是否继承自通用InstantFeedbackCollectionViewModel
,请参阅Check if a class is derived from a generic class。