参考混凝土类型的结构图容器
本文关键字:结构图 混凝土 类型 参考 | 更新日期: 2023-09-27 18:35:42
我正在使用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的东西,它工作得很好。
要扩充的实例可通过 lambda 获得:
For<ITestClass>().Use<TestClass>().EnrichWith(x => AddAspectsTo<ITestClass>(x));