结构图的新功能 - 获取StructureMap异常代码:202没有为PluginFamily定义的默认实例

时间:2011-01-01 23:27:54

标签: asp.net structuremap

我第一次尝试使用结构图,并且收到以下编译器错误,

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>

任何人都可以指出我到底出错的地方。

1 个答案:

答案 0 :(得分:1)

首先,这不是编译器错误,这是一个例外,存在很大的差异,但我不会讨论它。

在您的配置中,您似乎是混合和匹配配置方法。我通常选择一个并坚持下去。这是documentation

如果你想去属性路线,你必须tell SM to scan for classes with attributes

如果要使用xml路由,请确保将structuremap.config复制到包含exe的文件夹中。我不认为你应该这样做,但你可以像这样从配置显式加载

ObjectFactory.Initialize(x =>
            {
                x.AddConfigurationFromXmlFile("StructureMap.config");
            });

如果你想要强类型和编译器检查的东西,试试注册表dsl,这是更现代的配置机制。