具体类型中对StructureMap容器​​的引用

时间:2012-05-28 12:56:50

标签: c# structuremap

我正在使用DynamicProxy的东西和StructureMap设计一个简单的方面框架,我遇到了一个问题。我的注册表中有以下方法:

public T AddAspectsTo<T>(T concreteObject)
{
    ProxyGenerator dynamicProxy = new ProxyGenerator();
    return (T)dynamicProxy.CreateInterfaceProxyWithTargetInterface(typeof(T)
    ,concreteObject,
    new[] { (IInterceptor)new AspectInterceptor(attributeMap) });
}

这允许我编写如下代码:

For<ITestClass>().Use<TestClass>().EnrichWith(AddAspectsTo<ITestClass>);

重要的是我正在创建AspectInterceptor的具体版本。在那个类中,我需要从IoC容器中获取项目,但此时我不知道IContainer对象。

在使用生成的ITestClasses之前,我不需要访问IoC容器,因此IContainer已经创建,但无法弄清楚如何获取实例?

为了清楚起见,我在谈论我们在这里设置结构图容器的案例:

IContainer container = new Container(new ItemWithPropertiesRegistry());

而不是标准的ObjectFactory东西,它工作正常。

1 个答案:

答案 0 :(得分:1)

要充实的实例可以通过lambda:

获得
For<ITestClass>().Use<TestClass>().EnrichWith(x => AddAspectsTo<ITestClass>(x));