微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

依赖注入 – 使用Structuremap从多个程序集中依赖注入

我是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扫描后认为它需要这个命名空间并且它已经开始工作了.

我的问题解决了,但我不知道出了什么问题,或者这是不是正确的方法.任何帮助仍将非常感谢.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐