在C#中,可以將包含類型名稱的字符串轉換為相應的Type對象。但是,這種轉換所使用的方法取決於類型是在與調用代碼相同的程序集中定義,還是在不同的程序集中定義。
Type.GetType(string)
如果類型在同一個程序集中定義,可以使用Type.GetType(string)
方法,並提供完全限定的類型名稱作為字符串。例如,要獲取int
數據類型的Type
,可以使用:
Type.GetType("System.Int32");
Assembly.GetType(string)
如果類型在不同的程序集中定義,則還需要提供程序集名稱。可以使用Assembly.GetType(string)
方法來實現。首先,獲取對程序集的引用,然後使用該引用來獲取Type
:
Assembly asm = typeof(SomeKnownType).Assembly;
Type type = asm.GetType("Namespace.MyClass");
確保在提供給Type.GetType()
或Assembly.GetType()
的字符串中包含類型的命名空間。此外,對於強命名程序集,可能需要包含完整的程序集標識,包括版本、區域性和公共密鑰標記。
考慮以下場景,其中有一個字符串包含類型的完全限定名稱:
string typeName = "Namespace.MyClass, MyAssembly";
根據MyAssembly
是否被調用程序集引用,可以使用Type.GetType()
或Assembly.GetType()
:
// 如果 MyAssembly 被引用
Type type1 = Type.GetType(typeName);
// 如果 MyAssembly 未被引用
Assembly asm = typeof(SomeKnownType).Assembly;
Type type2 = asm.GetType(typeName);
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3