У меня есть этот код:
Type leftType = workItem[LeftFieldName].GetType();
Затем я хочу объявить переменную этого типа:
leftType someVar;
Это возможно?
У меня есть этот код:
Type leftType = workItem[LeftFieldName].GetType();
Затем я хочу объявить переменную этого типа:
leftType someVar;
Это возможно?
Вы можете сделать что-то подобное и передать их известному интерфейсу.
var someVar = Convert.ChangeType(someOriginalValue, workItem[LeftFieldName].GetType());
var someVar = Activator.CreateInstance(workItem[LeftFieldName].GetType());
Если вы замените var
на dynamic
(и используете .Net 4), вы можете вызвать методы, которые вы ожидаете от объекта someVar. Если они не существуют, вы просто получите исключение MissingMethodException.
Это невозможно.
Переменные типы - это концепция времени компиляции; было бы бессмысленно объявлять переменную типа, который неизвестен до выполнения.
Вы не сможете ничего сделать с переменной, так как вы не знаете, какой тип это.
Вероятно, вы ищете ключевое слово dynamic
.
object x = Activator.CreateInstance(Тип) позволит вам создать объект. Можете ли вы много сделать с этим, кроме того, я не уверен.
GetType
оценивается во время выполнения, а декларация non dynamic
находится во время компиляции (она становится более конкретной, чем да, да), поэтому нет. Даже var
потребует от вас присвоить значение, которое имеет однозначный тип.
Вы не можете этого сделать.
Вы можете использовать dynamic для .Net 4, но для более ранних версий .Net единственный тип, который будет соответствовать, - object
, которые вам нужно будет вручную отбросить позже, снова проверив .GetType()
на то, что вы назначили переменной object
.
Чтение: Ссылка SO: whats-the-difference-between-dynamicc-4-and-var
Нет, это невозможно. Тип переменной должен быть известен во время компиляции.
Вы можете объявить переменную типа object
, она будет способна хранить любой тип данных.