假设我遇到这种情况:
声明此结构的基类或母类:
public static class Mother
{
private static Childs _child = new Childs();
public static Childs Child
{
get { return _child; }
}
}
你怎么看我想要实现一个单例基类来访问一个地方的所有方法:Mother.Child.SomeMethod。
通过这种结构,我有了更好的代码组织。
现在我想将Childs类仅作为内部类,所以这里启动问题&因为我无法创建内部类的公共属性。内部类的结构如下:
internal class Childs
{
public static bool SomeMethod() { ... }
}
那么如何创建内部类的公共属性呢?
答案 0 :(得分:1)
继承树中的所有类必须至少具有与层次结构中最高类相同的可见性。没有办法让公共类派生自内部类。
也许是您的Childs
班级public
。如果你愿意,你可以使它abstract
以防止实例化它或使构造函数内部阻止在另一个程序集中派生它。
答案 1 :(得分:1)
如果孩子是内部孩子,那么静态访问点也应该是内部的。
如果您确实希望公开访问某些孩子,请考虑使用界面。
无论如何,如果有静态访问点,则不需要使成员静态。
public static class Mother
{
private static Child _child = new Child();
public static IChild Child
{
get { return _child; }
}
}
public interface IChild
{
// public stuff here
bool SomeMethod();
}
internal class Child : IChild
{
public bool SomeMethod() { ... }
// additional internal members here
}
答案 2 :(得分:0)
你做不到。如果属性是公共的,则任何其他类都可以访问它。但是如果他们能够得到它,他们也必须能够访问正在接收的课程。