使用Simple Injector进行条件注射

时间:2017-04-10 10:43:47

标签: model-view-controller simple-injector

我有一个名为Conext的类,它的一个构造函数接受一个参数:

    public enum enumDataBaseName {db1=1,db2};
    public class Context:IContext
     {           
       public Context(enumDatabaseName database)
        {
             //...
        }
     }

在应用程序中,有时我需要连接到db1或db2。 有什么办法可以在SimpleInjector配置中声明Context并根据枚举参数使用它吗?

1 个答案:

答案 0 :(得分:0)

您的enumDatabaseName提供运行时数据并按照here的说明,应用程序组件不应在构造期间要求运行时数据,而是:

  

运行时数据应该流经已构造的对象图的方法调用

本文介绍了两种解决方案。在您的情况下,我发现它最有可能将enumDatabaseName database参数移出构造函数并移动到IConext方法的方法参数中。例如:

public interface IConext
{
    void Save(Item item, enumDatabaseName database);
}