2

StructureMap を使用して特定のインスタンスを解決するときに、ネストされた依存関係を交換しようとしています。2.x では次のUseSpecialコードでこれを行うことができましたが、3.x では機能しません。

コードは基本的に言っています... のインスタンスを要求するとき、の依存関係の依存関係であるIObjectデフォルトのインスタンスを交換します。ITwoAnotherTwoIObject

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