2015-11-23 52 views
0

我使用Visual Studio 2015,並且創建了一個類圖來概述我最常用的類和它們的成員。在類圖中初始化代表

我有一個名爲UserMessage類中定義的委託:

public delegate void ProcessUserMessage(UserMessage message);

我用這個代表在其他類:

public UserMessage.ProcessUserMessage ProcessUserMessage;

到目前爲止,沒有任何問題。

因爲我討厭每次測試爲空的回調,我掛接在初始化無操作的事件處理程序,如建議here

public UserMessage.ProcessUserMessage ProcessUserMessage = delegate { };

但是,當我做到這一點,並重新打開類它無法加載,說:

代碼無法找到類圖'ClassDiagram1.cd'中的一個或多個形狀。你想嘗試自動修復類圖嗎?

即使當我把這個initiatlization在類的構造函數,而不是在聲明中的自動修復並不當然;-(

的工作,會出現同樣的錯誤。

我不明白什麼是錯的任何線索


更新:? 我創建了一個空白的項目,只是失敗的代碼:

public partial class MainWindow 
{ 
    public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate { }; 
} 

public class UserMessage 
{ 
    public delegate void ProcessUserMessageDelegate(string foo); 
} 

奇怪的是,MainWindow的類圖加載正常,但對於UserMessage,它失敗。但是我沒有改變UserMessage的任何標誌。

如果我改變類主窗口到它加載OK:

public partial class MainWindow 
{ 
    public UserMessage.ProcessUserMessageDelegate ProcessUserMessage; 
} 
+0

請在具有最小元素的新項目中再次嘗試。目前尚不清楚您是否確定了錯誤的正確來源。 –

+0

我試過,@HenkHolterman,但它仍然是一樣的。 有趣的是,它正確地顯示了主類圖,但未能加載** UserMessage **類圖。但是我在主類中進行了更改,而不是在UserMessage類中 – Anderman

+0

然後發佈完整的源代碼(而不是圖),標記(註釋掉)導致問題的原因。 –

回答

0

找到了解決辦法...

匿名無操作委託必須符合委託定義,所以我不得不添加添加了參數((string foo)在此示例中):

public partial class MainWindow 
{ 
    public UserMessage.ProcessUserMessageDelegate ProcessUserMessage = delegate (string foo){ }; 
} 

public class UserMessage 
{ 
    public delegate void ProcessUserMessageDelegate(string foo); 
}