我有以下代码:

public class Ancestor
{
    public string Property {get; protected set;}
}

public class Base : Ancestor
{
    public string Property {get; set;}
}

public class Derived : Base
{
    public Derived(string message)
    {
        //I need both properties to have the message value
    }
}


祖先类和基类不是我的代码,我无法更改它们。
有什么方法可以设置祖先的message值吗?
显然,仅执行以下操作将无法正常工作

Ancestor ancestor = this;
ancestor.Property = message


因为设置器受到保护。

最佳答案

仅通过反射:

 public class Derived : Base
{
    public Derived(string message)
    {
        Type type = typeof(Ancestor);
        Ancestor a = (Ancestor)this;
        type.GetProperty("Property").SetMethod.Invoke(a, new[] { message });
    }
}

关于c# - 隐藏基类的Set属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28169652/

10-11 06:45