Преобразовать значение строки в тип в C # - PullRequest
3 голосов
/ 15 января 2012

У меня есть строковая переменная типа A Например:

String StrType ="Int32"; // Or "Decimal" Or Char Or an Enum Color

Я хочу создать новую переменную с типом StrType (значение StrType)

в этом примере я хочу иметь эту переменную:

Int32 MyType;

Я не хочу использовать swich или if ... else для определения типа, потому что Не это ->

If (StrType=="Int32")
   Int32 MyType;

(другое слово, у меня есть имя типа в StrType, с которым я хочу создать новую переменную Это типа In Runtime)

Что я могу сделать это?

Ответы [ 4 ]

4 голосов
/ 15 января 2012

Возможно, вы ищете Type.GetType(StrType) - это даст вам переменную Type, содержащую соответствующий тип. Если вы хотите получить экземпляр объекта типа StrType, вам нужно будет немного поразмышлять, например:

    var t = Type.GetType("System.Int32");
    var constructor = t.GetConstructor(Type.EmptyTypes);
    object intObject = constructor.Invoke(null); //intObject will have type System.Int32

Конечно, это будет работать, только если тип успешно разрешен и если для этого типа существует конструктор без параметров. В производстве вы должны добавить чеки для этого.

1 голос
/ 15 января 2012

Я не использовал его, но попробуйте Type.GetType("System.Int32");

0 голосов
/ 15 января 2012

http://www.csharp -examples.net / отражательного примеры /

// get type of class Calculator from just loaded assembly Type calcType = testAssembly.GetType("Test.Calculator");

0 голосов
/ 15 января 2012

Вы можете использовать делегат для вызова String, Int32 и других конструкторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...