8

是否可以授予对基类设置器的私有访问权限,并且只能从继承类中使用它,就像受保护的关键字一样?

public class MyDerivedClass : MyBaseClass
{
    public MyDerivedClass()
    {
        // Want to allow MyProperty to be set from this class but not
        // set publically
        public MyProperty = "abc";
    }
}

public class MyBaseClass
{
    public string MyProperty { get; private set; }
}
4

4 回答 4

23

你为什么不使用protected

public string MyProperty { get; protected set; }

受保护(C# 参考)

受保护的成员可在其类内和派生类实例中访问。

于 2013-08-15T10:11:40.943 回答
3

您只需要将设置器设置为受保护,例如:

public class MyDerivedClass : MyBaseClass
{
    public MyDerivedClass()
    {
        // Want to allow MyProperty to be set from this class but not
        // set publically
        MyProperty = "abc";
    }
}

public class MyBaseClass
{
    public string MyProperty { get; protected set; }
}

另请参见访问修饰符(C# 参考)

于 2013-08-15T10:12:04.823 回答
1

使用受保护而不是私有。

于 2013-08-15T10:11:56.857 回答
0

保护是正确的方法,但为了讨论,可以这样设置私有属性:

public class MyDerivedClass : MyBaseClass
{
    public MyDerivedClass() : base(myProperty: "abc") { }
}

public class MyBaseClass
{
    public string MyProperty { get; private set; }

    public MyBaseClass(string myProperty) { 
        this.MyProperty = myProperty;
    }
}
于 2015-04-14T20:52:38.290 回答