Объявить переменную с помощью переменной типа

У меня есть этот код:

Type leftType = workItem[LeftFieldName].GetType();

Затем я хочу объявить переменную этого типа:

leftType someVar;

Это возможно?

Ответы

Ответ 1

Вы можете сделать что-то подобное и передать их известному интерфейсу.

var someVar = Convert.ChangeType(someOriginalValue, workItem[LeftFieldName].GetType());
var someVar = Activator.CreateInstance(workItem[LeftFieldName].GetType());

Если вы замените var на dynamic (и используете .Net 4), вы можете вызвать методы, которые вы ожидаете от объекта someVar. Если они не существуют, вы просто получите исключение MissingMethodException.

Ответ 2

Это невозможно.

Переменные типы - это концепция времени компиляции; было бы бессмысленно объявлять переменную типа, который неизвестен до выполнения.
Вы не сможете ничего сделать с переменной, так как вы не знаете, какой тип это.

Вероятно, вы ищете ключевое слово dynamic.

Ответ 3

object x = Activator.CreateInstance(Тип) позволит вам создать объект. Можете ли вы много сделать с этим, кроме того, я не уверен.

Ответ 4

GetType оценивается во время выполнения, а декларация non dynamic находится во время компиляции (она становится более конкретной, чем да, да), поэтому нет. Даже var потребует от вас присвоить значение, которое имеет однозначный тип.

Ответ 5

Вы не можете этого сделать.

Вы можете использовать dynamic для .Net 4, но для более ранних версий .Net единственный тип, который будет соответствовать, - object, которые вам нужно будет вручную отбросить позже, снова проверив .GetType() на то, что вы назначили переменной object.

Чтение: Ссылка SO: whats-the-difference-between-dynamicc-4-and-var

Ответ 6

Нет, это невозможно. Тип переменной должен быть известен во время компиляции.

Вы можете объявить переменную типа object, она будет способна хранить любой тип данных.