NServiceBusを直接参照せずに汎用バスとして機能するレイヤーを開発するように依頼されています。これまでのところ、目立たないメッセージのサポートのおかげでそれほど難しくはありません。今を除いて、私はIHandleMessagesの独自の定義を提供し、ワイヤーアップ中にそれをマップする方法を見つけるように求められました。だから私はこのようなことを考えています:
public class MessageHandlerAdapter<T> : IHandleMessages<T>
{
IUnityContainer container;
public MessageHandlerAdapter(IUnityContainer container)
{
this.container = container;
}
#region IMessageHandler<T> Members
public void Handle(T message)
{
var handler = container.Resolve<IHandle<T>>();
handler.Handle(message);
}
#endregion
}
IHandleは私たち自身の定義になります(ちなみに、これはIHandleMessagesとまったく同じです)。AppDomainを熟考し、IHandleを実装したすべてのクラスを見つけてそれらをコンテナーに登録してから、同じタイプTでMessageHandlerAdapterを登録することを期待します。
私の問題は、NServiceBusを2年近く使用しておらず、NSBパイプラインのこの種の機能をどこに接続するかを覚えていないことです。