gpt4 book ai didi

结构映射异常 : No Default Instance defined for PluginFamily

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

我在 CoreService 项目中定义了一个 SysMsgManager 类,如下所示:

public class SysMsgManager 
{
private ISysMsgRepository _SysMsgRepository;

public SysMsgManager()
{
_SysMsgRepository = ObjectFactory.GetInstance<ISysMsgRepository>();
}

....
}

在我的 DataAccess 项目中,我有“ISysMsgRepository”接口(interface)和两个具体实现,定义如下:
namespace DataAccess.Repository
{
[Pluggable("Default")]
public class SysMsgRepository : ISysMsgRepository
{
...
}
}

namespace DataAccess.Repository
{
[Pluggable("Stub")]
public class SysMsgRepository_Test : ISysMsgRepository
{
...
}
}

这就是我的 StructureMap.config 文件中的内容
<StructureMap>

<Assembly Name="CoreService" />
<Assembly Name="DataAccess" />

<PluginFamily
Assembly="DataAccess"
Type="DataAccess.Repository.ISysMsgRepository"
DefaultKey="Default" />

</StructureMap>

当我尝试运行我的应用程序时,出现以下错误:

StructureMap 异常代码: 202\n没有为 PluginFamily DataAccess.Repository.ISysMsgRepository、DataAccess、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 定义默认实例

谁能帮我解决这个问题?谢谢!

最佳答案

不幸的是,我对通过 XML 配置 StructureMap 不太熟悉。让我向您展示它是如何使用 C# 完成的。

var container = new Container(config=>
{
config.For<ISysMsgRepository>().Use<SysMsgRepository>();
});

看来您正在为接口(interface)和类使用标准命名约定(只是在类名的前面加上一个 I)。如果你对所有类型都这样做,你可以像这样配置你的容器:
var container = new Container(config=>
{
config.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
});

我希望这有帮助。使用代码而不是 XML 配置容器要容易得多。试试看。你会成为一个皈依者。

关于结构映射异常 : No Default Instance defined for PluginFamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285758/

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