我是IOC和strcturemap的新手,但我想知道如何注册从同一个接口实现的不同类,例如实现CustomerRepository和CategoryRepository的IRepository。 而且,正如您所看到的,如果我可以使用泛型类型。 像存储库或存储库
x.ForRequestedType<IRepository<Category>>().TheDefault.Is.OfConcreteType<IRepository<Category>>();
尝试了这一点它没有用。任何帮助都应该受到赞赏!
答案 0 :(得分:2)
配置StructureMap时,您可以使用Scan API自动注册已关闭的类型。
Scan(x =>
{
x.TheCallingAssembly();
x.ConnectImplementationsToTypesClosing(typeof(IRepository<>));
});
此功能位于最新的主干中,但我不确定它是否是任何已发布的版本,并且可能尚未在官方文档中。但是,有一个很好的blog post that explains it。
答案 1 :(得分:0)
没有为PluginFamily定义的默认实例MVCPoco.Data.IRepository`1 [[MVCPoco.Core.Category,MVCPoco.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]],MVCPoco.Data,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null
得到了最新的版本......项目运行但是当我在构造函数中注入一个IRepository时,它给了我这个错误。