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