Типирование на основе переменной

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

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

Для сравнения мне теперь пришлось бы применять приведение типов ожидаемого формата, например

(DataBoundType)ChosenValue == (DataBoundType)TestAgainstThisValue;

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

Спасибо

13.10.2009 12:26:36
4 ОТВЕТА
РЕШЕНИЕ

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

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

5
13.10.2009 12:29:42

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

0
13.10.2009 12:32:49

Пытаться

TestAgainstThisValue.GetType ()

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

0
13.10.2009 12:33:42

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

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

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

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

0
13.10.2009 12:36:14