0

我正在使用 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 东西,它工作得很好。

4

1 回答 1

1

要丰富的实例可通过 lambda 获得:

For<ITestClass>().Use<TestClass>().EnrichWith(x => AddAspectsTo<ITestClass>(x));
于 2012-05-29T19:11:33.307 回答