そのため、Castle DynamicProxy (バージョン 2.2) とインターセプターだけを使用して特定のコンポーネントを作成するソリューションを構築するために、しばらく懸命に取り組んできました。これらすべてが終わったときに、これらのコンポーネントをウィンザー コンテナーに登録する必要があることに気付きました。これは可能ですか、それとも私の仕事は無駄になりましたか?
私の問題を説明するために、2 つの城の構成を作成します。最初のものは機能しますが、2 つ目は機能しません。
最初の構成 (これはしばらくうまく機能しています):
<castle>
<facilities>
<facility
id="factory.support"
type="Castle.Facilities.FactorySupport.FactorySupportFacility, Castle.MicroKernel" />
</facilities>
<components>
<component
id="Factory"
service="Foo.IFactory, Foo"
type="Foo.Local.LocalFactory, Foo.Local" />
<component
id="Loader"
service="Foo.Contracts.ILoader, Foo.Contracts"
type="Foo.Local.Loader, Foo.Local"
factoryId="Factory" factoryCreate="GetLoader" />
</components>
</castle>
2 番目の構成 (type 属性に何を入力すればよいかわかりません。これがないと機能しません):
<castle>
<facilities>
<facility
id="factory.support"
type="Castle.Facilities.FactorySupport.FactorySupportFacility, Castle.MicroKernel" />
</facilities>
<components>
<component
id="Factory"
service="Foo.IFactory, Foo"
type="Foo.Remote.RemoteFactory, Foo.Remote" />
<component
id="Loader"
service="Foo.Contracts.ILoader, Foo.Contracts"
type="I DUNNO, WHAT'S THE TYPE?"
factoryId="Factory" factoryCreate="GetLoader" />
</components>
</castle>
したがって、作成した構成でファクトリ機能を登録し、次にファクトリを登録してから、「ILoader」コンポーネントを登録します。「LocalFactory」は ILoader コンポーネントの実際のタイプを作成しますが、「RemoteFactory」は動的プロキシを使用して ILoader コンポーネントを作成し、ターゲットなしでプロキシを作成します。つまり、ProxyGenerator.CreateInterfaceProxyWithoutTarget メソッドを使用するため、基になるクラスはありません。
では、2 番目の構成に従ってコンポーネントを登録する希望はありますか?
編集: 残念ながら、流暢な構成 API を使用することは、現時点ではオプションではありません。私の質問を絞り込むために、XML構成を使用してこれを達成することは可能ですか?