Объявить переменную с помощью переменной типа
У меня есть этот код:
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
, она будет способна хранить любой тип данных.