在StructureMap 3中请求特定对象时交换嵌套依赖项

时间:2014-07-14 22:36:58

标签: structuremap structuremap3

我在尝试使用StructureMap解析特定实例时交换嵌套依赖项。在2.x中,我可以使用以下UseSpecial代码执行此操作,但它在3.x中不起作用

代码基本上是......在请求IObject的实例时,将ITwo的默认实例与AnotherTwo交换为IObject的依赖关系依赖性。

public class MyStructureMapRegistry : Registry
{
    public MyStructureMapRegistry()
    {
        For<IObject>().UseSpecial(cfg => cfg.ConstructedBy(x =>
        {
            x.RegisterDefault(typeof(ITwo), x.GetInstance<AnotherTwo>());
            return x.GetInstance<DependsOnOne>();
        }));
    }
}

以下是我尝试连接的示例对象图。

public interface IObject { }
public interface IOne { }
public interface ITwo { }

public class DependsOnOne : IObject
{
    IOne _one;

    public DependsOnOne(IOne one)
    {
        _one = one;
    }
}

public class DependsOnTwo : IOne
{
    ITwo _two;

    public DependsOnTwo(ITwo two)
    {
        _two = two;
    }
}

public class Two : ITwo { }
public class AnotherTwo : ITwo { }

0 个答案:

没有答案