一尘不染

将字符串转换为C#中的类型[重复]

c#

如果我收到一个包含类名的字符串,并且想将此字符串转换为实型(字符串中的那个),该怎么办?

我试过了

Type.GetType("System.Int32")

例如,它似乎起作用。

但是当我尝试使用自己的对象时,它总是返回null。

我不知道字符串中会预先包含什么,因此这是将其转换为实型的唯一来源。

Type.GetType("NameSpace.MyClasse");

任何的想法?


阅读 366

收藏
2020-05-19

共1个答案

一尘不染

您只能使用 刚刚 类型的名称(连同其命名空间,当然),如果该类型是mscorlib或调用程序集。否则,您还必须包括程序集名称:

Type type = Type.GetType("Namespace.MyClass, MyAssembly");

如果程序集是严格命名的,则还必须包括所有这些信息。有关Type.GetType(string)更多信息,请参见文档。

或者,如果您已经引用了该程序集(例如,通过一种众所周知的类型),则可以使用Assembly.GetType

Assembly asm = typeof(SomeKnownType).Assembly;
Type type = asm.GetType(namespaceQualifiedTypeName);
2020-05-19