【发布时间】:2013-03-07 01:51:59
【问题描述】:
我有一个使用 StructureMap.MVC4 的 MVC4 应用程序。这是 IoC.cs 的片段
ObjectFactory.Initialize(x =>{
x.Scan(scan =>{
scan.TheCallingAssembly();
scan.WithDefaultConventions();});
x.For<IDbContext>().Use<EfDbContext>().Ctor<string>("connectionStringName").Is("DefaultDb");
x.For<IDatabase>().Use<Database>().Ctor<string>("connectionStringName").Is("DefaultDb");
x.For<IActionInvoker>().Use<InjectingActionInvoker>();
x.SetAllProperties(c=>c.OfType<IDbContext>());
... ...
DbContext 注入工作正常,ActionFilters 的 setter 注入以及所有使用默认约定的 Service:IService 也可以。但是我在尝试注入 IDatabase 时遇到以下错误:
Could not find a constructor parameter or property for NPoco.Database, NPoco, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null named connectionStringName Parameter name: name
如果我把它改成
x.For<IDatabase>().Use(new Database("DefaultDb"));
它有效。任何想法为什么?我想知道通过使用 New 是否会产生不同的 IDatabase 实例,尤其是在与 IDbContext 实例混合时。谢谢。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 structuremap npoco