所以我想知道这样的事情是否可行:
我是一个程序,我即将创建一个我的对象的实例。我发起了一个事件,让任何订阅者知道我即将创建一个对象。作为这个事件的一部分,我通过一个Hashtable,我将稍后传递给我的对象的构造函数。
订阅者可以修改此Hashtable吗?他们可以为委托类型添加条目,并将该类型的委托作为值?订户完成业务后,预创建活动即告结束。对Hashtable所做的更改是否会在触发事件的对象中表示?那么,如果将此Hashtable传递给对象的构造函数,那么该对象可能包含来自外部源的方法?
基本上 -
转到创建对象
消防请求代表事件
在对象的构造函数中使用由事件修改的委托哈希表
如果存在相同类型的委托,则Object使用哈希表中的方法代替自己的方法
现在,对象在标准函数上运行自定义代码
同样,我真的不知道我说的话是否可能,或者是否有意义。
答案 0 :(得分:1)
这是可能的,但我建议不要公开发送HashSet<T>
。原因是任何订阅者都可以修改HashSet<T>
。
相反,我不知道事件是正确的行动方案。我仍然会使用委托,但我不会将它们作为事件公开。这里的pub / sub模式可能更好(希望被通知的对象将通过Sub / Unsub方法传递委托)。
这允许您修改委托签名,以便实现在您进行调用时将数据值返回给您(而不是绕过HashSet<T>
)。
然后,您可以致电GetInvocationList
来获取每位代表,而不只是打一个电话。然后,您将遍历并收集返回的值。
从那时起,您将适当地聚合值,然后将该聚合传递给对象的构造函数。