如何在UML类图中最好地表示c#.net事件构造?

我正在设计一个实体/组件系统,其中实体内部通信的问题由事件消息系统解决。 组件分为两部分,一部分在实体中,一部分在子系统中“实体代理”,通过观察者类型系统保持同步。 我正在尝试使用事件和代理进行实现。

我试图模拟我的应用程序的事件/消息系统的结构,我遇到代理问题。 它现在的方式是一个图表(附加),显示系统中的delegate,eventArgs和实​​体,但是它们之间关系的性质仅表示为通用关联。 我还有第二张图显示了系统的接口。 我需要显示在这些对象中引发的事件,因为这是系统中大部分复杂性的地方。

我知道我也需要动态协作和时序图,但我想弄清楚我需要什么样的类型和多少不同的事件支持类以及inheritance结构的样子。 我想给自己一个我知道将一起工作的消息类型的选择。 我想我可以从这些预定义类型中选择EventArgs派生和委托类型,以便在动态图表和组件构建时重用。

我无法弄清楚的主要问题是,是将事件建模为属性还是操作。 我一直在尝试使用委托的关联类和带有事件构造型的OnSomeEvent()类型操作。 我不喜欢这个,因为事件不是一个操作。 我已经使用这个On ****()命名约定在代码中保护了方法。 这种方法并未真正捕获委托签名,多播行为和观察者模式。

其他人用什么方法来表达这些复杂且紧密耦合的类? 对我来说,图表的重点是既要文档又要更全面地理解系统中的接口。 在我的过程的这个阶段,我希望冻结接口并继续实现组件本身。 在此处输入图像描述

我不会在静态类图中包含信令字符,因为信令(它是事件的用途)是一种动态行为。 我会把事件代表保持原样(即带有签名)并将它们包含在一个类的普通操作中。 我认为这符合一个对象能够非常合适地发送事件的想法,并且它指定了事件的类型。

哪些信号将在哪里以及谁订阅谁应该在动态图表中建模。

编辑:

您是否考虑过添加类似<< event >><< signal >>的构造型来对类中的属性进行分类?

从静态角度查看模型时,事件和委托被视为简单方法。 有些工具通过提供构造型或标记来扩展规范,以将您的方法显示为事件/委托,并将它们与常规方法区分开来。

另一方面,您的事件和委托参数应该建模为类。 将时间因素添加到模型时,事件是有意义的,在这种情况下,您可以使用UML 事件和触发器元素(支持同步和异步消息传递)。

另一方面,UML是一种半forms语言,它使事件排序在两个不相关的状态机之间,例如不能保证,尽管这可以通过使用诸如MARTE的 UML配置文件来定义(很长一段时间我没有看看它,所以事情可能已经改变了)