c# - 使用 PropertyDescriptor 可以确定属性是否在当前类中被覆盖

标签 c# reflection system.reflection

如果我有:

class A
{
    public virtual string Owner { get; set; }
}

class B : A
{
    public override string Owner { get; set; }
}

如何使用 TypeDescriptor.GetProperties(type) 方法确定类 B 上的所有者属性是覆盖属性?

最佳答案

基于@DaveShaw 的评论和使用 propertyInfo 对类似问题的回答:

var property = TypeDescriptor.GetProperties(typeof(B)).Find("Owner", false).ComponentType.GetProperty("Owner");
var getMethod = property.GetGetMethod(false);
bool isOverride = getMethod.GetBaseDefinition() != getMethod;

关于c# - 使用 PropertyDescriptor 可以确定属性是否在当前类中被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25415719/

相关文章:

c# - 使用 MVVMCross 在 WPF 中捕获 OnExit 事件

javascript - 获取变量名。 javascript "reflection"

reflection - Typelite:如何使用 T4 转换将可为空的 C# 类型设置为可为空的 Typescript 类型?

c# - 将系统与事件连接起来

C# 如何显示平台目标

c# - 使用 Rx 为 webservice 调用创建一个轮询请求

c# - 调用接口(interface)方法,但 System.Reflection.MethodBase 设置为 System.Object

go - 没有实例的 TypeOf 并将结果传递给函数

c# - 如何通过反射获取枚举值的所有描述?

c# - 使用 System.Reflection 打印所有 System.Environment 信息