创建内部类的公共属性?

时间:2016-09-30 10:58:48

标签: c#

假设我遇到这种情况:

声明此结构的基类或母类:

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() { ... }
}

那么如何创建内部类的公共属性呢?

3 个答案:

答案 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)

你做不到。如果属性是公共的,则任何其他类都可以访问它。但是如果他们能够得到它,他们也必须能够访问正在接收的课程。