Приведение object к пользовательскому типу данных - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Как-то не помог мне поиск в решении следующей задачи. Подскажите пожалуйста. Есть две структуры,
struct NodeInfo{/*набор данных*/};
struct QueryInfo {/*набор данных*/};
По создании и заполнении экземпляров этих структур, я пихаю это все в 'TreeNode'.Tag В последствии, по выделению мышью узла в дереве, мне нужно эти данные выцепить. Т.к. я заранее не знаю, какой тип данных там лежит, я делаю следующее:
NodeInfo nInfo;
QueryInfo qInfo;
if (clickedNode.Tag.GetType().Name == "NodeInfo")
      nIinfo = (NodeInfo)clickedNode.Tag;
else
      qInfo = (QueryInfo)clickedNode.Tag;
Что крайне плохо, т.к. язык не дает использовать далее эти объекты, ссылаясь на то, что они могут быть и не заполнены. Пришла идея делать object:
object info;
if (clickedNode.Tag.GetType().Name == "NodeInfo")
      info = (NodeInfo)clickedNode.Tag;
else
      info = (QueryInfo)clickedNode.Tag;
Но в таком случае не удается добраться до свойств объекта, ибо непонятно, на каком этапе какие из свойств доступны. Можно, конечно, попробовать сделать так:
((NodeInfo)info).prop;
и т.д., но это неудобно, и не факт что работает (я не проверял). Внимание, вопрос! Как можно (можно?) объект info привести к определенному типу, в зависимости от условия? Есть ли такой метод? Заранее спасибо.

Решение задачи: «Приведение object к пользовательскому типу данных»

textual
Листинг программы
public static explicit operator NodeInfo(QueryInfo value) {}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы