C#:在运行时使用类型名称创建变量(rtti?)

C#: Create variable with typename in runtime (rtti?)

我需要创建一些具有某些预定义类型的变量,这些变量存储在其他变量值中。 在伪代码中它看起来像:

string typeName = "int";
object refToObj;
create data refToObj type typename.

write refToObj.getSize();

此伪代码必须创建类型为 int 的 var refToObj,然后在输出中 return 4(写入指令..)。

如何在 C# 中执行此操作?

类似下面的内容?

Type t = Type.GetType("System.Int32");

Console.WriteLine("Sizeof: " + System.Runtime.InteropServices.Marshal.SizeOf(y));   
Console.WriteLine("Type: " + t);

var x = Activator.CreateInstance(t);

Console.WriteLine("Value: " + x);

将输出:

Sizeof: 4
Type: System.Int32
Value: 0

注意: int 是基础系统类型的别名,在 32/64 位操作系统上会有所不同。对于 Activator.CreateInstance 你需要适当的系统类型才能成功,尽管你可以有某种形式的 Dictionary 映射。