我为我们的应用程序编写了一个小型 pub/sub 系统,
你通过实现 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>