鉴于以下课程 - 我想知道这两个成员中的哪一个是抽象的:
abstract class Test
{
public abstract bool Abstract { get; set; }
public bool NonAbstract { get; set; }
}
var type = typeof( Test );
var abs = type.GetProperty( "Abstract" );
var nonAbs = type.GetProperty( "NonAbstract" );
// now, something like:
if( abs.IsAbstract ) ...
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有像IsAbstract
-property 那样的东西.
我需要选择一个类的所有非抽象字段/属性/方法 - 但也没有BindingFlags
缩小选择范围.
Fre*_*els 12
属性实际上是一些"语法糖",由两种方法实现:getter方法和setter方法.
所以,我认为你应该能够通过检查getter和/或setter是否是抽象的来确定属性是否是抽象的,如下所示:
PropertyInfo pi = ...
if( pi.GetSetMethod().IsAbstract )
{
}
Run Code Online (Sandbox Code Playgroud)
而且,AFAIK,一个领域不能抽象.;)