[英]Public properties usage when inherited from private class
我有三个具有许多公共属性的类,因此我生成了一个继承自它们的基类:
public class CommonConfig
{
public TimeSpan Period1 { get; private set; }
public TimeSpan Period2 { get; private set; }
public TimeSpan Period3 { get; private set; }
};
public class Config1 : CommonConfig
{
public long count1 {get; private set; }
}
public class Config2 : CommonConfig
{
public long count2 {get; private set; }
}
我不确定是否要使CommonConfig
public
。 是否可以将其设为private
但仍然可以进行如下所示的使用。
Config1 c1;
TimeSpan ts1 = c1.Period1;
您不能将类private
,对于非嵌套类, internal
是最严格的修饰符。
同样,您不能访问对后代类的限制要比对父类的限制少,因此必须对CommonConfig
坚持使用public
。
不,您不能,因为要能够访问该类的属性,您需要将其指定为public
,并且不能将private
类指定为public
。
Config1 c1;
TimeSpan ts1 = c1.Period1; // THIS PROPERTY HS TO BE PUBLIC
如果你
//MISMATCH BETWEEN CLASS AND ITS PROPERTIES ACCESS MODIFIERS
private class CommonConfig {
public TimeSpan Period1 { get; private set; }
public TimeSpan Period2 { get; private set; }
public TimeSpan Period3 { get; private set; }
}
甚至更多,您将得到编译器错误:
命名空间中定义的元素不能显式声明为私有,受保护或受保护的内部
在“顶级”级别(在命名空间级别)定义类时,必须将其声明为public
。 如果要隐藏它,则必须在另一个类中声明该类 。
否,您不能将其设为私有。 您不能使用具有公共财产的私人班级。 您必须指定公共课程
如果您的目标是防止直接使用CommonConfig
类,则可以将CommonConfig
类CommonConfig
为abstract
类, CommonConfig
其标记为abstract
属性(根据需要)。 这样,尽管该类是可见的,但使用它的唯一方法是通过Config1
或Config2
。
详情请参阅 。
怎么样
public class CommonConfig
{
public TimeSpan Period1 {get; protected set;}
{
您还可以根据需要保护整个属性...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.