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 のものではなく、正常に動作します。