我正在使用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东西,它工作正常。
答案 0 :(得分:1)
要充实的实例可以通过lambda:
获得For<ITestClass>().Use<TestClass>().EnrichWith(x => AddAspectsTo<ITestClass>(x));