class 图中的初始化委托
initialized delegates in class diagram
我使用 Visual Studio 2015,我创建了一个 class 图表来概述我最常用的 classes 及其成员。
我在 class 中定义了一个委托,名为 UserMessage:
public delegate void ProcessUserMessage(UserMessage message);
我在另一个 class:
中使用这个委托
public UserMessage.ProcessUserMessage ProcessUserMessage;
到目前为止没有问题。
因为我讨厌每次都测试回调是否为 null,所以我在初始化时连接了一个空操作事件处理程序,正如建议的那样 here:
public UserMessage.ProcessUserMessage ProcessUserMessage = delegate { };
但是当我这样做并重新打开 class 图时,加载失败,显示:
Code could not be found for one or more shapes in class diagram 'ClassDiagram1.cd'. Do you want to attempt to automatically repair the class diagram?
自动修复当然不起作用;-(
即使我将此初始化放在 class' 构造函数中,而不是在声明中,也会出现相同的错误。
我不明白哪里出了问题。有什么线索吗?
更新:
我创建了一个只有失败代码的空白项目:
public partial class MainWindow
{
public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate { };
}
public class UserMessage
{
public delegate void ProcessUserMessageDelegate(string foo);
}
奇怪的是,MainWindow 的 class 图加载正常,但 UserMessage 加载失败。但是我没有改变 UserMessage 的任何东西。
如果我将 class 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);
}
我使用 Visual Studio 2015,我创建了一个 class 图表来概述我最常用的 classes 及其成员。
我在 class 中定义了一个委托,名为 UserMessage:
public delegate void ProcessUserMessage(UserMessage message);
我在另一个 class:
中使用这个委托public UserMessage.ProcessUserMessage ProcessUserMessage;
到目前为止没有问题。
因为我讨厌每次都测试回调是否为 null,所以我在初始化时连接了一个空操作事件处理程序,正如建议的那样 here:
public UserMessage.ProcessUserMessage ProcessUserMessage = delegate { };
但是当我这样做并重新打开 class 图时,加载失败,显示:
Code could not be found for one or more shapes in class diagram 'ClassDiagram1.cd'. Do you want to attempt to automatically repair the class diagram?
自动修复当然不起作用;-(
即使我将此初始化放在 class' 构造函数中,而不是在声明中,也会出现相同的错误。
我不明白哪里出了问题。有什么线索吗?
更新: 我创建了一个只有失败代码的空白项目:
public partial class MainWindow
{
public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate { };
}
public class UserMessage
{
public delegate void ProcessUserMessageDelegate(string foo);
}
奇怪的是,MainWindow 的 class 图加载正常,但 UserMessage 加载失败。但是我没有改变 UserMessage 的任何东西。
如果我将 class 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);
}