已初始化类图中的委托

本文关键字:初始化 | 更新日期: 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);
}