将字符串的值转换为C#中的类型



我有一个String变量,它包含一个类型例如:

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

我想用类型StrType(StrType的值)制作新的变量

在这个例子中,我想要这个变量:

Int32 MyType;

我不想使用swich或if…else来检测类型,因为不是这个-->

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

(另一个词是,我在StrType中有一个类型名称,我想用它创建一个新变量它键入运行时)

我能做什么?

您可能正在查找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

当然,只有当类型被成功解析并且该类型存在无参数构造函数时,这才会起作用。在生产中,您应该为此添加检查。

我还没有使用它,但尝试了Type.GetType("System.Int32");

您可以使用委托来调用String、Int32和其他构造函数。

http://www.csharp-examples.net/reflection-examples/

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

相关内容

  • 没有找到相关文章

最新更新