0

StructureMapで実行されているデコレータパターンの非常に単純なバージョンを取得しようとしていますが、機能させることができません。これが私のコードです(ブレークポイントに注意してください):

public interface ITestClass { void DoSomething(); }

public class TestClass : ITestClass
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something"); //Breakpoint
    }
}

public class LoggingTestClass : ITestClass
{
    private ITestClass originalClass;

    public LoggingTestClass(ITestClass original)
    {
        originalClass = original; //Breakpoint
    }
    public void DoSomething()
    {
        Console.WriteLine("Log start");
        originalClass.DoSomething();
        Console.WriteLine("Log finish");
    }
}

そして私のレジストリで:

For<ITestClass>().Use<TestClass>().
EnrichWith(original => new LoggingTestClass(original));

そして最後にテスト:

[TestMethod]
    public void DoSomeTesting()
    {
        using (IContainer container = new Container(new ApiRegistry()))
        {
            ITestClass testClass = container.GetInstance<TestClass>(); //Breakpoint
            testClass.DoSomething();
        }
    }

テストをデバッグするときは、最初にテストのブレークポイントに到達し、次にDoSomething()メソッドのブレークポイントに到達します。LoggingTestClassのコンストラクターは実行されません。

どうすればそれをさらに単純化できるかわかりません。EnrichWithは単に呼び出されていないようです...

4

1 に答える 1

0

ああ、私は記念碑的に愚かであるようです!GetInstance<TestClass>の代わりに使用していましたGetInstance<ITestClass>。その小さな私は数時間私を忙しくしてきました!あなたのビジネスマンについて行きなさい。

于 2012-05-25T13:14:48.887 に答える