我第一次尝试使用结构图,并且收到以下编译器错误,
StructureMap Exception Code: 202
No Default Instance defined for PluginFamily Super.SuperCore.Core.DataAccess.IPersonRepository, Super.SuperCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
调用界面的地方:
private IPersonRepository _iPersonRepository;
public void Init() {
_iPersonRepository = ObjectFactory.GetInstance<IPersonRepository>();
}
我的界面声明:
[PluginFamily("Default")]
public interface IPersonRepository
{
List<string> getAllNames();
}
我的StructureMap.config:
<?xml version="1.0" encoding="utf-8" ?>
<StructureMap>
<Assembly Name="Super.SuperWeb" />
<Assembly Name="Super.SuperCore" />
</StructureMap>
任何人都可以指出我到底出错的地方。
答案 0 :(得分:1)
首先,这不是编译器错误,这是一个例外,存在很大的差异,但我不会讨论它。
在您的配置中,您似乎是混合和匹配配置方法。我通常选择一个并坚持下去。这是documentation
如果你想去属性路线,你必须tell SM to scan for classes with attributes
如果要使用xml路由,请确保将structuremap.config复制到包含exe的文件夹中。我不认为你应该这样做,但你可以像这样从
ObjectFactory.Initialize(x =>
{
x.AddConfigurationFromXmlFile("StructureMap.config");
});
如果你想要强类型和编译器检查的东西,试试注册表dsl,这是更现代的配置机制。