依赖注入 – 使用Structuremap从多个程序集中依赖注入
发布时间:2020-12-14 05:01:27 所属栏目:百科 来源:网络整理
导读:我是DI概念的新手,也是结构图的新手.我试图完全填充一个场景,我的所有接口都在AssemblyA中,我的所有实现都在AssemblyB中.我想使用Structuremap在构造函数中注入AssemblyB类的实例,该构造函数依赖于AssemblyA的接口 public class Customer(ICustomerService){
我是DI概念的新手,也是结构图的新手.我试图完全填充一个场景,我的所有接口都在AssemblyA中,我的所有实现都在AssemblyB中.我想使用Structuremap在构造函数中注入AssemblyB类的实例,该构造函数依赖于AssemblyA的接口
public class Customer(ICustomerService) { } ICustomerService在AssemblyA中,CustomerService类在assemblyB中.我希望Structuremap在此构造函数中注入CustomerService实例.我假设如果类的名称与前缀为和I的接口的名称相同.结构图将自动识别它. 我写了以下配置. x => { x.Scan(scan => { scan.Assembly("AssemblyA"); scan.Assembly("AssemblyB"); scan.TheCallingAssembly(); scan.WithDefaultConventions(); }); 但它给了我错误 StructureMap Exception Code: 202 No Default Instance defined for PluginFamily AssemblyA.ICustomerService,AssemblyA,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null 我想使用默认约定,并避免将每个接口注册到类. 解决方法
好吧,我让它上班,但我现在更加困惑.
这段代码似乎有效 IContainer container = new Container(c => { c.Scan(x => { x.Assembly("AssemblyA"); x.Assembly("AssemblyB"); x.IncludeNamespace("AssemblyA"); x.TheCallingAssembly(); x.WithDefaultConventions(); }); }); 这里我简单地添加了x.IncludeNamespace(“AssemblyA”);在AssemblyB扫描后认为它需要这个命名空间并且它已经开始工作了. 我的问题解决了,但我不知道出了什么问题,或者这是不是正确的方法.任何帮助仍将非常感谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |