1

私は NServiceBus ゲートウェイ ハンドラーの構築に取り組んでおり、すべての構成が c# クラス内で定義されるように、構成ファイルを避ける必要があります。その結果、次のセクションを C# コードに変換する必要があります

<GatewayConfig>
    <Channels>
       <Channel Address="http://localhost:25899/SiteB/" ChannelType="Http" Default="true"/>
    </Channels>
 </GatewayConfig>

NServiceBus.Config 名前空間で GatewayConfig、ChannelCollection、および ChannelConfig を見つけましたが、それらを一緒にリンクすることはできません。助けてください

4

2 に答える 2

2

GatewayConfig の IProvideConfiguration を実装するクラスを作成するだけです。これにより、独自の構成を提供する方法が提供されます。これを行う方法の正確な詳細については、pubsub サンプルを参照してください。

于 2012-05-18T22:06:55.823 に答える
1

さて、Reflector をインストールして実装を調べたところ、その方法を見つけました。System.Configuration.ConfigurationElement を返す ChannelCollection.CreateNewElement() メソッドがあります。NServiceBus は、内部で ChannelConfig をインスタンス化するメソッドをオーバーライドしたため、ConfigurationElement 型を ChannelConfig 型にキャストするだけで済みますが、これは直感的なインターフェイスとはほど遠いものです。この NServiceBus.Config.ChannelCollection は一種の未完成の作業のように見えます。NServiceBus.Config.MessageEndpointMappingCollection のような他のコレクションを見ると、その子要素 ​​NServiceBus.Config.MessageEndpointMapping を操作するために必要なタイプ セーフなメソッドがすべて見つかるからです。 NServiceBus チームは、ChannelCollection で同じものを作るのが面倒だったと思います。

更新: CreateNewElement() メソッドが保護されているため、ChannelCollection から継承した独自のクラスを実装して、新しい ChannelConfig 要素を追加するメソッドを公開する必要があります

于 2012-05-17T17:43:55.793 に答える