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 { }