IOC に Spring.NET を使用するアプリケーションと、Spring.NET が提供する他の多くの機能があります。私が今取り組んでいる問題は、WebServiceProxyFactory に似たものをセットアップして、アプリで使用したい Web サービスを自動プロキシする方法です。この構成は、単一のサービス エンドポイントに最適です。
<object id="MyServiceClient" type="Spring.Web.Services.WebServiceProxyFactory, Spring.Services">
<property name="ServiceUri" value="https://my.service1.net/service.asmx"/>
<property name="ServiceInterface" value="Sample.IServiceClient1"/>
<property name="WebServiceProxyBaseType" value="Sample.SecureWebServiceProxy, Sample"/>
<property name="MemberAttributes">
<dictionary>
<entry key="*">
<list>
<object type="System.Web.Services.Protocols.SoapHeaderAttribute, System.Web.Services">
<constructor-arg value="ServiceAuthenticationHeader" />
<property name="Direction" value="In" />
</object>
<object type="System.Web.Services.Protocols.SoapHeaderAttribute, System.Web.Services">
<constructor-arg value="ServiceErrorStatus" />
<property name="Direction" value="Out" />
</object>
</list>
</entry>
</dictionary>
</property>
<property name="ProductTemplate">
<object>
<property name="ServiceAuthenticationHeader" ref="ServiceAuthenticationHeader" />
<property name="ServiceErrorStatus" ref="ServiceErrorStatus" />
</object>
</property>
ただし、アプリの構成設定に基づいて、潜在的に無制限の数のエンドポイントを処理する必要があります。構成は、さまざまな URL でホストされていても同じインターフェイスを実装している可能性があるサービス エンドポイントに関する数と詳細を教えてくれます。
私が理解できないのは、Spring.NET を構成して、ファクトリによって生成されたオブジェクトごとにServiceUriを変更できるようにする方法です。Factory の GetObject メソッドを呼び出しますが、プロキシ オブジェクトを生成する前に使用するServiceUriを何らかの形で指定したいと考えています。
今のところ、舞台裏で大変な作業を行うカスタム IFactoryObject を実装するのが最善の方法だと考えています。
ありがとう