2

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

代码基本上是在说......当请求 的实例时IObject,将默认实例交换为ITwoAnotherTwo依赖项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 { }
4

0 回答 0