ドメイン駆動型設計に関する書籍を読んでいます。ドメインイベントについての章があります。著者はASP.Netアプリケーションの[ThreadStatic]属性を持つコールバックコレクションを使用し、このブログの記事を参照すると問題が生じることを示しています。http://www.hanselman.com/blog/ATaleOfTwoTechniquesTheThreadStaticAttributeAndSystemWebHttpContextCurrentItems.aspxドメインイベントASP.NetのThreadStatic属性を使用したコールバック
私はこのブログで説明を読んでいます。しかし、私は心配が何であるか正確に理解していません。 誰もこのドメインイベントのアプローチを使用して、彼の経験を共有できますか?ここで
は、ドメインイベントクラスのコードは、(それがあるUdi漢からである)である:ここでは
public static class DomainEvents
{
[ThreadStatic]
private static List<Delegate> _actions;
private static List<Delegate> Actions
{
get
{
if (_actions == null)
{
_actions = new List<Delegate>();
}
return _actions;
}
}
public static IDisposable Register<T>(Action<T> callback)
{
Actions.Add(callback);
return new DomainEventRegistrationRemover(() => Actions.Remove(callback));
}
public static void Raise<T>(T eventArgs)
{
foreach (Delegate action in Actions)
{
Action<T> typedAction = action as Action<T>;
if (typedAction != null)
{
typedAction(eventArgs);
}
}
}
private sealed class DomainEventRegistrationRemover : IDisposable
{
private readonly Action _callOnDispose;
public DomainEventRegistrationRemover(Action toCall)
{
_callOnDispose = toCall;
}
public void Dispose()
{
_callOnDispose();
}
}
}