有没有可能在基类中有一个从派生类设置的私有setter而不是公共的
本文关键字:setter 设置 有可能 基类 有一个 派生 | 更新日期: 2023-09-27 18:27:51
是否可以像protected关键字一样,对基类setter进行私有访问,并且只从继承类中使用它?
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; }
}
为什么不使用protected
?
public string MyProperty { get; protected set; }
受保护(C#参考)
受保护的成员可以在其类内以及通过派生类实例进行访问。
您只需要将setter设置为受保护的,如:
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#参考)
使用protected而不是private。
保护是正确的方法,但为了便于讨论,可以这样设置私有属性:
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;
}
}