0

假设我们有一个名为 AllFoos 的命名空间。

假设 AllFoos 命名空间中的所有类都实现了一个名为 IFoo 的特定接口,并且都是单例。

现在我们有:

HashSet<IFoo> myFoos = new HashSet<IFoo>();

用 AllFoos 中所有类的单例实例填充集合 MyFoos 的代码是什么?

所有这些类的单例实现是:

private static IFoo _instance = new ConcreteImplementationOfFoo1();

public static IFoo Instance
{
     get
     {
          return _instance;
     }
}
4

1 回答 1

4

如果您使用依赖注入框架,您可以:

  1. 在容器中将您的类注册为“单例”
  2. 轻松注册所有实现(好的框架允许基于某些模式进行大规模注册)
  3. 将接口的所有实现解析为列表

如果您想采用经典方式,则必须说明您的单例模式的外观(例如静态实例属性?),并且可以通过评论中提到的经典反射来解决。

于 2011-06-03T20:43:53.797 回答