次のようなメッセージが届いたときに、いくつかのログを初期化したいと思います。
public class BaseMessage
{
public long TraceID { get; set; }
}
public class MyMessage : BaseMessage, ICommand
{
//..other properties
}
public class Handler : IHandleMessages<MyMessage>
{
public void Handle(MyMessage message)
{
log4net.ThreadContext.Properties["TraceID"] = message.TraceID
//Process message
}
}
問題は、メッセージがたくさんあり、メッセージが届いたときにすべてのメッセージに対してこれを実行したいことです。次のようなことができるようにしたいと思います。
public class Handler : IInitializeHandlers, IHandleMessages<MyMessage>
{
public void Init(BaseMessage message)
{
log4net.ThreadContext.Properties["TraceID"] = ((BaseMessage)message).TraceID
}
public void Handle(MyMessage message)
{
//Process message
}
}