在C#中,可以将包含类型名称的字符串转换为相应的Type对象。但是,这种转换所使用的方法取决于类型是在与调用代码相同的程序集中定义,还是在不同的程序集中定义。
Type.GetType(string)
如果类型在同一个程序集中定义,可以使用Type.GetType(string)
方法,并提供完全限定的类型名称作为字符串。例如,要获取int
数据类型的Type
,可以使用:
<code class="language-csharp">Type.GetType("System.Int32");</code>
Assembly.GetType(string)
如果类型在不同的程序集中定义,则还需要提供程序集名称。可以使用Assembly.GetType(string)
方法来实现。首先,获取对程序集的引用,然后使用该引用来获取Type
:
<code class="language-csharp">Assembly asm = typeof(SomeKnownType).Assembly; Type type = asm.GetType("Namespace.MyClass");</code>
确保在提供给Type.GetType()
或Assembly.GetType()
的字符串中包含类型的命名空间。此外,对于强命名程序集,可能需要包含完整的程序集标识,包括版本、区域性和公共密钥标记。
考虑以下场景,其中有一个字符串包含类型的完全限定名称:
<code class="language-csharp">string typeName = "Namespace.MyClass, MyAssembly";</code>
根据MyAssembly
是否被调用程序集引用,可以使用Type.GetType()
或Assembly.GetType()
:
<code class="language-csharp">// 如果 MyAssembly 被引用 Type type1 = Type.GetType(typeName); // 如果 MyAssembly 未被引用 Assembly asm = typeof(SomeKnownType).Assembly; Type type2 = asm.GetType(typeName);</code>
以上是如何从 C# 中的字符串表示形式确定对象类型?的详细内容。更多信息请关注PHP中文网其他相关文章!