Типирование на основе переменной - PullRequest
0 голосов
/ 13 октября 2009

Как мне поступить следующим образом ... У меня есть элемент управления, который можно привязать к разным типам данных ... String, Int, Int32, DateTime и т. Д. ... но в общем случае результат сохраняется в универсальном " объект "тип данных. Итак, я использую другое поле для идентификации типа ОЖИДАЕМЫЙ, например ..

String BoundDataType = "System.String"   // or System.Int32 or date/time, etc.
object ChosenValue;

В целях сравнения мне теперь пришлось бы принудительно указывать приведение типов ожидаемого формата, например

(DataBoundType)ChosenValue == (DataBoundType)TestAgainstThisValue;

Я знаю, что мог бы поместить в коммутатор или перегруженные функции с разными сигнатурами для каждого типа данных, но искал более общий способ обработки напрямую.

Спасибо

Ответы [ 4 ]

5 голосов
/ 13 октября 2009

Вам на самом деле не нужно отдельное свойство BoundDataType - достаточно будет object.GetType().

Что касается сравнения, большинство стандартных типов реализуют интерфейс IComparable , который можно использовать для проверки на равенство.

0 голосов
/ 13 октября 2009

вы можете использовать object.GetType (), чтобы получить тип переменной.

Затем вы можете использовать Convert.ChangeType (object, type) для выполнения преобразования.

object conv = Convert.ChangeType(ChosenValue,ChosenValue.GetType());

это должно работать.

0 голосов
/ 13 октября 2009

Попробуйте

TestAgainstThisValue.GetType ()

чтобы получить тип переменной

0 голосов
/ 13 октября 2009

Используйте System.ComponentModel.TypeConverter -Класс

...