Enrich没有跑步

时间:2012-05-25 09:43:29

标签: c# structuremap decorator

我正在尝试使用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根本就没有被调用......

1 个答案:

答案 0 :(得分:0)

啊,看来我是愚蠢的!我使用的是GetInstance<TestClass>而不是GetInstance<ITestClass>。那个小小的我让我忙了几个小时!关于你的商界人士。