Structuremap 2.6.1 bootstrapper

时间:2010-07-28 12:08:49

标签: asp.net-mvc structuremap

我正在使用StructureMap 2.6.1
这是Bootstrapper.cs的代码:

ObjectFactory.Initialize(x => x.For<IFoo>().Use<Foo>());

当我运行应用程序时,我得到以下异常:

  

未定义默认实例   PluginFamily   IFoo的,   版本= 1.0.0.0,   Culture = neutral,PublicKeyToken = null

当我使用这个过时的代码时,我没有异常:

ForRequestedType<IFoo>()
                .TheDefault.Is.OfConcreteType<Foo>();

有人能告诉我ObjectFactory初始化程序的最新语法吗? 谢谢。

1 个答案:

答案 0 :(得分:3)

每次调用Initialize时,都会重置ObjectFactory。即在以下场景中:

ObjectFactory.Initialize(x => x.For<IFoo>().Use<Foo>());
ObjectFactory.Initialize(x => x.For<IBaz>().Use<Baz>());

您实际上只将IBaz映射到Baz

您应该使用ApplicationRegistry:

public class ApplicationRegistry : Registry
{
    public ApplicationRegistry()
    {
        For<IFoo>().Use<Foo>();
        For<IBaz>().Use<Baz>();
    }
}

并在Initialize方法中使用它:

ObjectFactory.Initialize(x => x.AddRegistry(new ApplicationRegistry()));