.net:在注入对象的构造函数中传递字符串参数

时间:2017-07-11 07:47:22

标签: c# .net mongodb dependency-injection

我希望将 MVC .net应用连接到 Mongo数据库。所以我首先看一下documentation

要配置连接,我必须在 MongoClient 类的构造函数中传递一个String:

var client = new MongoClient("mongodb://host:27017,host2:27017/?replicaSet=rs0");

问题是我正在使用 Castle Windsor 包来使用依赖注入而我是一个菜鸟。

我做的第一件事是在 Windsor容器中注册组件:

 container.Register(Component.For<IMongoClient>()
                .ImplementedBy<MongoClient>()
                .LifeStyle.PerWebRequest);

我在 HomeController

中传递了它
 private IRowan _rowan;
 private IMongoClient _mongoClient;

 public HomeController(IRowan rowan, IMongoClient mongoClient)
 {
      _rowan = rowan;
      _mongoClient = mongoClient;       
 }

我的问题是,如何在 MongoClient 的构造函数中传递String?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情......

container.Register(
    Component.For<IMongoClient>().ImplementedBy<MongoClient>()
             .DependsOn(Dependency.OnValue("connectionString", "mongodb://host:27017,host2:27017/?replicaSet=rs0"))
    );

答案 1 :(得分:1)

使用Documentation中所述的UsingFactoryMethod。它将在每个WebRequest上执行Func并创建您的MongoClient

container.Register(Component.For<IMongoClient>()
            .UsingFactoryMethod(
                () => new MongoClient("mongodb://host:27017,host2:27017/?replicaSet=rs0"))
            .LifeStyle.PerWebRequest);