Переход к пользовательскому типу класса [дубликат]

user3342256 спросил: 10 мая 2018 в 04:21 в: c#

У этого вопроса уже есть ответ:

  • How do I provide custom cast support for my class? 4 ответа

Я пытаюсь преобразовать переданное значение строки наряду с свойством "Tag" кнопки для пользовательского типа "DialogClosingEventArgs", как показано:

var converted = (DialogClosingEventArgs)((Button)sender).Tag;

Однако во время выполнения я получаю следующее исключение: " Невозможно выполнить листинг объекта типа "System.String" для типа "MaterialDesignThemes.Wpf.DialogClosingEventArgs" "

Как я могу принудительно выполнить это преобразование?

1 ответ

Ashkan Mobayen Khiabani ответил: 10 мая 2018 в 04:25

Чтобы применить объект к типу, он должен быть совместим с типом, который вы выполняете. Как вы говорите, это string, так что это просто не Castable для DialogClosingEventArgs.

Works:

button.Tag = 3;
int a = (int)button.Tag;

Не работает:

button.Tag = "some string";
int a = (int)button.Tag;

Поскольку строка не может быть передана в int.