c# - 如何反射性地判断属性是否具有公共(public) Setter

标签 c# reflection

我将一个对象模型保存到 XML,但是当我将它加载回时,我在尝试使用 PropertyInfo.SetValue() 时遇到异常,因为该属性没有 setter 只有 getter。

我想要么不保存只有 getter 的属性,要么在加载时弄清楚它是否对我尝试设置一个值有效。

谁知道怎么做

干杯

最佳答案

您可以使用 PropertyInfo.GetSetMethod - 如果属性是只读的或者 setter 是非公共(public)的,这将返回 null

if (property.GetSetMethod() != null)
{
    // Yup, you can write to it.
}

如果你能应付非公开的 setter,你可以使用:

if (property.GetSetMethod(true) != null)
{
    // Yup, there's a setter - but it may be private
}

关于c# - 如何反射性地判断属性是否具有公共(public) Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811198/

相关文章:

c# - 从不同表的数据库中获取数据

c# - 关闭父级而不关闭子级

go - panic : reflect: call of reflect. Value.Call 零值

reflection - Reflect 认为 struct Value 也是一个 ptr?

java - 通过反射更改未装箱的原始类型(例如 long,而不是 Long)

c# - 使用通用代码从 C# 中的另一个对象构建对象

c# - 启动进程并允许调用者结束而不等待进程完成

C#/面向对象的概念书和代码示例

c# - 如何阻止多次鼠标单击下一个 Windows WPF 中的元素?

java - 使用反射从 .class 文件实例化 Java 类