私はこのような方法を持っています:
public static void Raise<TEvent>(TEvent eventToRaise)
where TEvent : IEvent
{
}
そして、私はそのメソッドを次のように呼び出します。
foreach (IEvent evt in entity.UncommittedEvents)
{
DomainEvents.Raise(evt);
}
ここで、これは正しいと思います。
bool areSame = typeof(TEvent) == eventToRaise.GetType();
しかし、それは真実ではないようです。代わりにそれは:
bool areSame = typeof(TEvent) == typeof(IEvent);
どうしてこんなことに?
ここでの問題は、私がここで具体的なイベントのタイプを「失った」ことです。その型パラメーターを次のメソッドに渡すと(イベントのインスタンスなしで)、型は「IEvent」だけになります。