【问题标题】:Choosing which constructor to use with StructureMap选择与 StructureMap 一起使用的构造函数
【发布时间】:2011-01-16 12:55:23
【问题描述】:

我知道我可以指定一个构造函数来与 DefaultConstructor 属性一起使用。但是,我也希望能够在某些情况下使用不同的构造函数。有什么方法可以用 StructureMap 注册两个构造函数,然后在调用 ObjectFactory.GetInstance() 时选择使用哪一个?

【问题讨论】:

  • 我认为 .net - structuremap.sourceforge.net 所以已经重新标记。
  • 是的,.net(更具体地说是 C#)。感谢您重新标记。

标签: .net structuremap


【解决方案1】:

我不相信你可以在 StructureMap 中做到这一点。你能把你正在寻找的单独的构造函数行为拉到一个适配器类中吗?然后你的代码可以依赖必要的适配器类。

    public class FirstBehavior : IBehavior
{
    private WrappedClass _wrappedClass;
    public FirstBehavior()
    {
        _wrappedClass = new WrappedClass(<first constructor>)
    }
}

public class SecondBehavior : IBehavior
{
    private WrappedClass _wrappedClass;
    public SecondBehavior()
    {
        _wrappedClass = new WrappedClass(<second constructor>)
    }
}

[TestFixture]
public class Test
{
    [Test]
    public void configure_container()
    {
        var container = new Container(config =>
        {
            config.For<IBehavior>().Use<FirstBehavior>().Named("first");
            config.For<IBehavior>().Use<SecondBehavior>().Named("second");
        });

        container.GetInstance<IBehavior>("first").ShouldBeOfType(typeof(FirstBehavior));
        container.GetInstance<IBehavior>("second").ShouldBeOfType(typeof(SecondBehavior));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多