创建内部类的公共属性?
问题描述:
假设我有这样的情况:创建内部类的公共属性?
基类或母类,声明这种结构:
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() { ... }
}
那么我该如何制作一个内部类的公共属性?
答
如果孩子是内部的,静态接入点也应该是内部的。
如果您确实想公开访问某些儿童的成员,请考虑使用界面。
无论如何,如果有一个静态接入点,您不需要使成员静态。
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
}
答
你不能那样做。如果该财产是公共的,任何其他类都可以访问它。但是如果他们能够得到它,他们也必须能够访问正在接收的课程。
'public'只表示“尽可能公开”。由于该类是“internal”,因此该方法具有相同的最大可见性:仅在同一个程序集中才可见。 –