gpt4 book ai didi

c# - 在继承中获取属性的私有(private) setter

转载 作者:太空狗 更新时间:2023-10-30 01:05:47 24 4
gpt4 key购买 nike

以下是我的代码:

class Foo
{
public string Bar { get; private set; }
}

var prop = typeof(Foo).GetProperty("Bar");
if (prop != null)
{
// The property exists
var setter = prop.GetSetMethod(true);
if (setter != null)
{
// There's a setter
Console.WriteLine(setter.IsPublic);
}
}

是的,如您所想,这完全正确。但是当出现继承时,情况就不同了:

class Foo
{
public string Bar { get; private set; }
}

class A : Foo
{

}

当然我改变了这一行:

var prop = typeof(Foo).GetProperty("Bar");

var prop = typeof(A).GetProperty("Bar");

然后,setter 变为 null,控制台不打印任何内容!

所以……为什么?

顺便说一句,是否有一些解决方法可以实现这一点或完全是另一种方式?

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

一般的解决方法是调用

var prop = GetType().GetProperty("Bar").DeclaringType.GetProperty("Bar");

这不是很直观,我同意。

关于c# - 在继承中获取属性的私有(private) setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17357933/

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