已初始化类图中的委托
本文关键字:初始化 | 更新日期: 2023-09-27 18:24:05
我使用Visual Studio 2015,我创建了一个类图来概述我最常用的类及其成员。
我在一个名为UserMessage:的类中定义了一个委托
public delegate void ProcessUserMessage(UserMessage消息)
我在另一个类中使用此委托:
public UserMessage.ProcessUserMessage ProcessUserMessage
到目前为止没有问题。
因为我讨厌每次都测试回调是否为null,所以我在初始化时挂接了一个无操作事件处理程序,如下所示:
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;
}
找到解决方案。。。
匿名无操作委托必须符合委托定义,所以我只需要添加参数(本例中为(string foo)
):
public partial class MainWindow
{
public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate (string foo){ };
}
public class UserMessage
{
public delegate void ProcessUserMessageDelegate(string foo);
}