【发布时间】:2015-11-23 10:22:31
【问题描述】:
我使用 Visual Studio 2015,并创建了一个类图来概述我最常用的类及其成员。
我在一个名为 UserMessage 的类中定义了一个委托:
public delegate void ProcessUserMessage(UserMessage message);
我在另一个类中使用这个委托:
public UserMessage.ProcessUserMessage ProcessUserMessage;
目前没有问题。
因为我讨厌每次都测试 null 的回调,所以我在初始化时连接了一个无操作事件处理程序,正如 here 建议的那样:
public UserMessage.ProcessUserMessage ProcessUserMessage = delegate { };
但是当我这样做并重新打开类图时,它无法加载,说:
在类图“ClassDiagram1.cd”中找不到一个或多个形状的代码。是否要尝试自动修复类图?
自动修复当然不起作用;-(
即使我将此初始化放在类的构造函数中,而不是在声明中,也会出现相同的错误。
我不明白出了什么问题。有什么线索吗?
更新: 我用失败的代码创建了一个空白项目:
public partial class MainWindow
{
public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate { };
}
public class UserMessage
{
public delegate void ProcessUserMessageDelegate(string foo);
}
奇怪的是 MainWindow 的类图加载正常,但对于 UserMessage 却失败了。但我不会为 UserMessage 更改任何内容。
如果我将 MainWindow 类更改为:
public partial class MainWindow
{
public UserMessage.ProcessUserMessageDelegate ProcessUserMessage;
}
【问题讨论】:
-
在包含最少元素的新项目中再试一次。目前尚不清楚您是否已确定错误的正确来源。
-
我试过了,@HenkHolterman,但还是一样。有趣的是,它正确显示了主类图,但无法加载 UserMessage 类图。但是我在主类中进行了更改,而不是在 UserMessage 类中
-
然后发布完整的源代码(不是图表),标记(注释掉)导致问题的原因。
标签: c# delegates class-diagram