最近我一直在做一些编程,遇到了一个我在c#中发现奇怪的问题。 (至少对我来说)隐藏的构造函数在c#中不可能嵌套类?
public class Foo
{
//whatever
public class FooSpecificCollection : IList<Bar>
{
//implementation details
}
public FooSpecificCollection GetFoosStuff()
{
//return the collection
}
}
我想富的消费者能够获得到FooSpecificCollection参考,甚至在其上执行某些操作。也许甚至可以将它设置为Foo的其他属性,或者像这样,但不能创建此类的实例。 (应该能够安装这个集合的唯一的类应该是Foo)
我的请求真的太牵强了吗?我知道人们的方式更聪明的定义了c#但不应该有这样的选项,父类可到目前为止,创建一个嵌套类实例,但其他人却不能。
我创建了一个解决方案,使一个抽象类,或提供接口,通过物业和实施具体的私有类,是不是其他任何地方。
这是处理这种情况的正确方法吗?
可能重复:http://stackoverflow.com/questions/1664793/how-to-restrict-access-to-nested-class-member-to-enclosing-class – 2010-03-14 02:34:38
好奇:是否会有'Foo的多个实例,每个实例都有自己独特的'FooSpecificCollection'? – BillW 2010-03-14 09:23:25
是的,就是这样。假设每个客户端都有一个Foo实例(它将在某个精确时间由工厂创建),Foo将为其自身创建一个FooSpecificCollection。我可以访问foo特定的集合,以便让人们知道foo具有什么内容,我让它们玩这些项目,但是它们不应该能够创建一个,因为它没什么意义。在晚上,我想也许我尽量让这个代码太多的语义:) – luckyluke 2010-03-14 09:41:01