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