gpt4 book ai didi

c# - 如何通过反射识别抽象成员

转载 作者:太空狗 更新时间:2023-10-29 22:18:11 25 4
gpt4 key购买 nike

给定以下类 - 我想知道这两个成员中的哪一个是抽象的:

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 ) ...

不幸的是,IsAbstract 属性不存在。
我需要选择一个类的所有非抽象字段/属性/方法 - 但也没有 BindingFlags 来缩小选择范围。

最佳答案

属性实际上是一些“语法糖”,由两种方法实现:getter 方法和 setter 方法。

因此,我认为您应该能够通过检查 getter 和/或 setter 是否是抽象的来确定属性是否是抽象的,如下所示:

PropertyInfo pi = ...

if( pi.GetSetMethod().IsAbstract )
{
}

而且,据我所知,字段不能是抽象的。 ;)

关于c# - 如何通过反射识别抽象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com