0

[これは(stackoverflow: multiple constructors)に似ています]

私は次のクラスを持っています:

"ServiceHost:IServiceHost" と次のコンストラクター:

「public ServiceHost(ServiceBase baseService)」

[これは実際には「System.ServiceProcess.ServiceBase」の派生物であることに注意してください]。コードで手動で「ServiceToHandle:ServiceBase」を「baseService」パラメーターとして渡すと、すべて問題ありません。ここで、xm-configuration を使用して同じことを試み、2 つのマッピングを構成しました。

<component id="TheServiceToControl"
   service="ServiceDemo.ServiceToHandle, ServiceToHandle1"
   type="ServiceDemo.ServiceToHandle, ServiceToHandle1"
>
</component>

<component id="TheServiceController-AKA-ServiceHost"
   service="ServiceDemo.IServiceHost, IServiceHost"
   type="ServiceDemo.ServiceHost, ServiceHost"
>
    <parameters>
        <serviceBase>${TheServiceToControl}</serviceBase>
    </parameters>

</component>

私がロードしているとき:

var container = new WindsorContainer(new XmlInterpreter());
IServiceHost host = container.Resolve<IServiceHost>();

「System.ServiceProcess.ServiceBase」から派生した追加の「TheServiceToControl」オブジェクト(私のオブジェクト)で構築する必要がある、構成済みのホスト オブジェクトを期待しています。しかし、私は醜いエラーが発生しています:

未処理の例外: Castle.MicroKernel.Handlers.HandlerException: コンポーネント 'TheServiceController-AKA-ServiceHost' を作成できません。これには満たすべき依存関係があるためです。

'TheServiceController-AKA-ServiceHost' は次の依存関係を待機しています: - サービス 'System.ServiceProcess. ServiceBase ' が登録されていませんでした。

System.ServiceProcess アセンブリを追加しようとしましたが、作成できる方法が見つかりませんでした。

誰かがおそらくここで何が起こっているのか説明できれば、それは本当に素晴らしいことです!! 階層内のすべてのオブジェクトを作成する必要があるとは思っていませんでした。

とにかくありがとう、そしてよろしく!

4

2 に答える 2

0

ServiceDemo.ServiceToHandle をサービスに登録する必要があると思います: ServiceBase ie

<component id="TheServiceToControl"
   service="ServiceDemo.ServiceBase, ServiceToHandle1"
   type="ServiceDemo.ServiceToHandle, ServiceToHandle1"
>
</component>

TheServiceController-AKA-ServiceHost を解決するとき、その派生型ではなく、サービス ServiceBase を探します。このようにして、TheServiceController-AKA-ServiceHost のパラメーター セクションを省略することもできます。

よろしく、マルウェイン。

于 2013-04-04T06:08:39.273 に答える