在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中文網其他相關文章!