理论:代表们转交给建设者

时间:2011-02-08 15:57:18

标签: c# dynamic delegates theory

所以我想知道这样的事情是否可行:

我是一个程序,我即将创建一个我的对象的实例。我发起了一个事件,让任何订阅者知道我即将创建一个对象。作为这个事件的一部分,我通过一个Hashtable,我将稍后传递给我的对象的构造函数。

订阅者可以修改此Hashtable吗?他们可以为委托类型添加条目,并将该类型的委托作为值?订户完成业务后,预创建活动即告结束。对Hashtable所做的更改是否会在触发事件的对象中表示?那么,如果将此Hashtable传递给对象的构造函数,那么该对象可能包含来自外部源的方法?

基本上 -

转到创建对象
消防请求代表事件
在对象的构造函数中使用由事件修改的委托哈希表 如果存在相同类型的委托,则Object使用哈希表中的方法代替自己的方法 现在,对象在标准函数上运行自定义代码

同样,我真的不知道我说的话是否可能,或者是否有意义。

1 个答案:

答案 0 :(得分:1)

这是可能的,但我建议不要公开发送HashSet<T>。原因是任何订阅者都可以修改HashSet<T>

中的值

相反,我不知道事件是正确的行动方案。我仍然会使用委托,但我不会将它们作为事件公开。这里的pub / sub模式可能更好(希望被通知的对象将通过Sub / Unsub方法传递委托)。

这允许您修改委托签名,以便实现在您进行调用时将数据值返回给您(而不是绕过HashSet<T>)。

然后,您可以致电GetInvocationList来获取每位代表,而不只是打一个电话。然后,您将遍历并收集返回的值。

从那时起,您将适当地聚合值,然后将该聚合传递给对象的构造函数。