2015-11-23 3 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 в классе конструктора, вместо того, чтобы при объявлении, появляется та же ошибка.

Я не понимаю, что не так ли ключи


Update:.? Я создал пустой проект только с неисправным кодом:

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

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

Странно, что диаграмма классов для MainWindow загружается нормально, но для UserMessage она терпит неудачу. Но я не изменяю anythign для UserMessage.

Он загружает нормально, если я изменить класс MainWindow к:

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); 
} 
Смежные вопросы