我有一个具有内部结构/类的类(我已经决定了哪个,如果它对此我很重要,我将使用它)我希望从其他类访问内部类,但只能由外部类构造。 这可能吗?
由于
答案 0 :(得分:4)
不幸的是,你能得到的最接近的是internal
构造函数。虽然外部类的private
和protected
成员可用于内部类,但情况恰恰相反。
答案 1 :(得分:4)
为什么不声明内部接口(或内部抽象类)以便不可实例化,然后是实现接口的私有内部类?
像
这样的东西using System;
namespace test {
class Outer {
public interface IInner {
void SayHello();
}
private class Inner : IInner {
public void SayHello() {
Console.WriteLine("Hello");
}
}
public IInner MakeInner() {
return new Inner();
}
}
class Program {
static void Main(string[] args) {
Outer x = new Outer();
x.MakeInner().SayHello();
}
}
}
这样只有Outer
可以创建具体的Inner
个对象,而其他类必须调用MakeInner
方法。
请注意,通过这种方式,您还可以对同一程序集中的类强制执行约束。