【发布时间】:2010-03-13 21:56:22
【问题描述】:
我最近一直在做一些编程,遇到了一个我发现在 c# 中很奇怪的问题。 (至少对我来说)
public class Foo
{
//whatever
public class FooSpecificCollection : IList<Bar>
{
//implementation details
}
public FooSpecificCollection GetFoosStuff()
{
//return the collection
}
}
我希望 Foo 的使用者能够获得对 FooSpecificCollection 的引用,甚至对其执行一些操作。甚至可能将其设置为 Foo 或类似的其他属性,但不能创建此类的实例。 (应该能够实例化这个集合的唯一类应该是 Foo。
我的要求真的那么牵强吗?我知道人们更聪明地定义了 c#,但不应该有这样一个选项,即父类可以创建嵌套类实例,但其他人不能。
到目前为止,我创建了一个解决方案,通过属性使抽象类或接口可用,并实现在其他任何地方都不可用的具体私有类。
这是处理这种情况的正确方法吗?
【问题讨论】:
-
好奇:是否会有多个 'Foo 实例,每个实例都有自己独特的 'FooSpecificCollection ?
-
是的,就是这样。假设每个客户端都有一个 Foo 实例(它将由工厂在某个精确的时间创建),而 Foo 将为自己创建一个 FooSpecificCollection。我允许访问 foo 特定的集合,以便人们知道 foo 里面有什么,我让他们玩这些项目,但他们不应该能够创建一个,因为这没有什么意义。在晚上我想也许我试图让这段代码有太多的语义:)
标签: c# programming-languages language-features