アプリ用の小さなパブ/サブ システムを作成しました。
IHandle を実装してメッセージを購読する
サブスクライバーが実装しているとしましょうIHandle<IEnumerable<MyType>>
次に、誰かがタイプのメッセージを公開しますICollection<MyType>>
。IColletion<> はタイプ IEnumerable<> であるため、これはもちろんサブスクライバーをトリガーします。
しかし、私のコードはこれをサポートしていません。回避策は、パブリッシャーが ICollection を IEnumerable にキャストすることですが、大規模なチームではバグが発生しやすくなります。
これは動作しないコードです
public void Publish<T>(T message) where T : class
{
if (config.EnableEventAggregator)
subscribers.OfType<IHandle<T>>()
.ForEach(s => s.Handle(message));
}
任意のアイデアIHandle<IEnumerable>
を継承するすべてのタイプを見つけてほしいですか?IEnumerable<T>