如何从命名空间中的所有类创建单例集合

时间:2011-06-03 20:22:11

标签: c# interface generated-code

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

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

现在我们有:

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

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

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

private static IFoo _instance = new ConcreteImplementationOfFoo1();

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

1 个答案:

答案 0 :(得分:4)

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

  1. 在容器中将您的课程注册为“singleton”
  2. 轻松注册所有实现(良好的框架允许基于某些模式进行批量注册)
  3. 将您的界面的所有实现解析为列表
  4. 如果你想采用经典的方式,你必须告诉你的单例模式是什么样的(例如静态实例属性?),它可以用评论中提到的经典反射来解决。