使用 Visual Studio 建模项目创建 C# 事件
Posted
技术标签:
【中文标题】使用 Visual Studio 建模项目创建 C# 事件【英文标题】:Creating C# events with Visual Studio Modeling Project 【发布时间】:2012-02-15 15:37:05 【问题描述】:我开始在 VS 中使用 UML 建模。我尝试使用几个类创建图表,连接它们并从模型生成一些代码 - 安装功能包后,一切似乎都正常。
但是,我缺少的是声明事件的能力——这在 .Net 中起着相当重要的作用(并且通常是设计的关键)。
如何在 Visual Studio 的 UML 类图中声明事件?
编辑:
把事情弄清楚。一段时间以来,我不对 Visual Studio 中 C# 项目中与类图功能相关的任何内容感兴趣。
此问题与Modeling Project 有关,这是 Visual Studio 2010 Ultimate 中的新功能。
【问题讨论】:
在我看来,在 UML 中处理事件是不可能的。我试过了,但从来没有找到怎么做,这么好的问题...... 【参考方案1】:希望以下链接对您有所帮助。
http://developingfor.net/2007/11/29/visual-studio-2008-class-diagram/
【讨论】:
遗憾的是,这无济于事。类图不是建模项目。类图是所有 C# 项目中可用的简化类设计工具。 Modeling Project 是 Visual Studio 2010 Ultimate 中的一项新功能(因此缺乏在线资料),是一个成熟的 UML 架构设计器,具有类、流程、序列、层和其他图表。【参考方案2】:您应该尝试包含 Observer\Event Pattern。这里讨论得很好。 http://www.cumps.be/nl/blog/read/design-patterns-observer-event-pattern
【讨论】:
这对我有什么帮助?那里需要事件(事件是观察者模式的实现)。我需要找到一种在 UML 中表示事件的方法,而不是避免使用事件。 我认为我们没有直接的方式在 UML 图中表示事件。【参考方案3】:UML 与实现语言无关。在 UML 中定义特定语言习语的正确方法是使用stereotype。构造型是 UML 元类的一种特化。定义一个 profile,它将 Class 扩展为一个 EventHandler 和 Event stereotype,它扩展了 Message。然后将这些刻板印象适当地应用于模型中的类。然后,您可以将特定语言的惯用语实现细节放在构造型中。
【讨论】:
感谢您的回答。在研究文档 20 多分钟后,我终于发现功能包提供了带有“事件”构造型的 C# 配置文件。然而,代码生成模板似乎完全忽略了这种刻板印象的属性。我会继续研究这个,所以我不会把它标记为答案。但是,我会给你赏金(否则它会过期)。 @Matěj Zábský:我注意到和你一样的行为。我提交了一个错误here。如果您有权访问该网站,请投票以加快关注。 @Matěj:更新:MS 已对错误报告做出回应,承诺在下一个版本中解决该问题。他们还提供了一种解决方法(我还没有机会测试)。有关详细信息,请参阅 cmets 线程 on the issue page。 @Kmote 我可以确认此问题已在 VS 2012 RC 中修复。感谢您推动微软解决此问题:)【参考方案4】:以上都没有对我有用。以下是启用 C# 语言概念的方法:
确保您已经有一个建模项目或创建一个 在 Visual Studio 中选择 Architecture -> Windows -> UML model explorer 选择您的建模项目并打开属性面板 在“配置文件”下点击“C# 配置文件”复选框。向类图中添加事件:
在类上创建新属性。 在属性面板中检查构造型中的“C#事件”遗憾的是,属性上没有视觉指示将其标记为事件。
【讨论】:
以上是关于使用 Visual Studio 建模项目创建 C# 事件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2017 项目中启用 C# 7 的所有功能?