如何在左侧使用带有Type的IS运算符?

Dov*_*Dov 2 c# reflection static types properties

我有一个我正在编写的方法,它使用反射来列出类的静态属性,但我只对那些特定类型的方法感兴趣(在我的例子中,属性必须是从DataTable派生的类型).我想要的是类似下面的if()语句(目前总是返回true):

PropertyInfo[] properties = ( typeof(MyType) ).GetProperties( BindingFlags.Public
    | BindingFlags.Static );

foreach( PropertyInfo propertyInfo in properties ) {
    if( !( propertyInfo.PropertyType is DataTable ) )
        continue;

    //business code here
}
Run Code Online (Sandbox Code Playgroud)

谢谢,我很难过.

Ree*_*sey 8

您需要使用Type.IsAssignableFrom而不是"is"运算符.

这将是:

if( !( DataTable.IsAssignableFrom(propertyInfo.PropertyType) )
Run Code Online (Sandbox Code Playgroud)

DataTable.IsAssignableFrom(propertyInfo.PropertyType) 如果PropertyType是DataTable或DataTable的子类,则为true.