【发布时间】:2015-09-30 17:20:19
【问题描述】:
我正在尝试创建一个粗略/基本的事件订阅/发布系统只是为了进行实验。
我创建了一个基本的IEventListener 接口,然后在其上创建了一个通用的IEventListener<T> : IEventListener 接口,它有一个函数OnEvent(T eventParam)
然后我创建了一个实现IEventListener<string> 和IEventListener<int> 的测试类
我认为通过以下方式传递它:
Dictionary<Type, List<object>> _listenersByType = new Dictionary<Type, List<object>>();
foreach(Type interfaceType in listener.GetType().GetInterfaces())
{
if(interfaceType is IEventListener)
{
AddSubscriber(interfaceType.GetGenericTypeDefinition(), listener);
}
}
我可以创建一个事件类型到对象的查找以将事件投射和发布到。然而,当步入。我看到它循环了所有接口,我可以看到类型名称是“IEventListener”但条件永远不会为真,并且永远不会将我的侦听器添加到字典中。
【问题讨论】: