在使用 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 { }