创建内部类的公共属性

本文关键字:属性 内部类 创建 | 更新日期: 2023-09-27 18:09:44

假设我有这样的情况:

基类或母类声明这个结构:

public static class Mother
{
     private static Childs _child = new Childs();
     public static Childs Child
     {
          get { return _child; }
     }
}

你怎么能看到我想实现一个单例基类访问所有的方法在一个地方:

有了这个结构,我有了更好的代码组织。

现在我想让孩子类只作为内部的,所以这里开始的问题,因为我不能创建一个内部类的公共属性。内部类的结构如下:

internal class Childs
{
    public static bool SomeMethod() { ... }
}

那么我如何使一个内部类的公共属性?

创建内部类的公共属性

如果子节点是内部的,那么静态访问点也应该是内部的。

如果你真的想对子类的某些成员有公共访问权限,可以考虑使用接口。

无论如何,如果存在静态访问点,则不需要将成员设置为静态。

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
}

继承树中的所有类必须至少与层次结构中最高的类具有相同的可见性。没有办法从内部类派生出一个公共类。

可能是你的Childspublic。如果你想,你可以把它设置为abstract,以防止实例化它,或者把构造函数设置为内部,以防止在另一个程序集中派生它。

你不能那样做。如果属性是公共的,任何其他类都可以访问它。但是,如果它们能够获得它,它们还必须能够访问正在接收的类。