C# 从私有类继承时的公共属性用法
我有三个类,它们有许多公共属性,因此我生成了一个基类,它们从中继承:C# 从私有类继承时的公共属性用法,c#,inheritance,properties,C#,Inheritance,Properties,我有三个类,它们有许多公共属性,因此我生成了一个基类,它们从中继承: 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 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
。是否可以将其保持为私有,但仍可以制作一些允许使用的东西,如下面所示
Config1 c1;
TimeSpan ts1 = c1.Period1;
不能将类
设为私有
,内部
是非嵌套类的最严格的修饰符
此外,您不能对子类的访问权限限制小于父类,因此对于
CommonConfig
,您必须坚持使用public
,internal
作为非嵌套类的最严格的修饰符
此外,您不能访问比父类限制性更小的子类,因此您必须坚持使用
public
来访问CommonConfig
不您不能,因为要访问该类的属性,您需要指定它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
。如果要隐藏它,必须在另一个类中声明该类 不可以,为了能够访问该类的属性,您需要将其指定为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
。如果要隐藏它,必须在另一个类中声明该类 不,你不能把它当作私人的。
不能访问具有公共属性的私有类。
必须指定公共类否不能将其设置为私有类。 不能访问具有公共属性的私有类。 您必须指定公共类如何
public class CommonConfig
{
public TimeSpan Period1 {get; protected set;}
{
如果需要,您还可以保护整个属性…怎么样
public class CommonConfig
{
public TimeSpan Period1 {get; protected set;}
{
如果需要,您还可以保护整个属性…如果您的目的是防止直接使用类
CommonConfig
,您可以将类CommonConfig
标记为abstract
以及其中的属性(根据需要)。
这样,虽然类是可见的,但使用它的唯一方法是通过Config1
或Config2
有关更多详细信息。如果您的目的是防止直接使用类
CommonConfig
,则可以将类CommonConfig
标记为abstract
,以及其中的属性(根据需要)。
这样,虽然类是可见的,但使用它的唯一方法是通过Config1
或Config2
有关详细信息。您不能更改类层次结构的可访问性。试想一下,如果基类是私有的或内部的,而派生类是公共的,那么客户机代码如何访问基类?答案是它不能。你不能。您必须将
CommonConfig
保持为public
您不能更改类层次结构的可访问性。试想一下,如果基类是私有的或内部的,而派生类是公共的,那么客户机代码如何访问基类?答案是它不能。你不能。除非是嵌套在另一个类中的类,否则必须将CommonConfig
保持为public
class@SamLeach没错,我修改了答案,除非它是嵌套在另一个类中的类class@SamLeach是的,我修改了我的答案