gpt4 book ai didi

dependency-injection - 使用 Structuremap 从多个程序集进行依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 21:46:03 26 4
gpt4 key购买 nike

我是 DI 概念的新手,也是结构图的新手。我正在尝试完全填充我的所有接口(interface)都在 AssemblyA 中的场景我所有的实现都在AssemblyB .我想使用 Structuremap 来注入(inject) AssemblyB 的实例构造函数中的类,它依赖于 AssemblyA 中的接口(interface)

public class Customer(ICustomerService)
{

}
ICustomerServiceAssemblyACustomerService类(class)在 assemblyB .我想要 Structuremap 注入(inject) CustomerService此构造函数中的实例。我假设如果类的名称与以和为前缀的接口(interface)名称相同 I . Structuremap 会自动识别它。

我已经编写了以下配置。
 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

我想使用默认约定并避免将每个接口(interface)注册到一个类。

最佳答案

好的,我让它工作了,但我现在更困惑了。

这段代码似乎工作

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

我的问题已解决,但我不知道出了什么问题,或者这是否是正确的方法。任何帮助仍将不胜感激。

关于dependency-injection - 使用 Structuremap 从多个程序集进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com