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 のセッター インジェクション、およびデフォルトの規則を使用するすべての 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 を使用すると、特に IDbContext インスタンスと混合する場合に、IDatabase の別のインスタンスになるのではないかと思います。ありがとう。