2013-09-27 55 views
4

我可以使用完全限定名稱(如Namespace.OuterClass.NestedClass)創建一個新類。但試圖獲得與Type.GetType("Namespace.OuterClass.NestedClass")類型返回null。下面是示例代碼:如何使用Type.GetType獲取嵌套類的類型(字符串)

namespace Sample 
{ 
    public class Program 
    { 
     public class Animal { } 
     public class Vegetable { } 
     public class Mineral { } 

     static public void Test() 
     { 
     Object o = new Sample.Program.Vegetable(); 
     Type t = Type.GetType("Sample.Program.Vegetable"); // returns null 
     Console.ReadKey(); 
     } 

     static void Main(string[] args) 
     { 
     Program.Test(); 
     } 
    } 
} 

如何使用Type.GetType爲嵌套類?

回答

16

C#完全限定名稱的字符串值在類之間使用+。通過字符串獲取類型Type.GetType("Namespace.OuterClass+NestedClass")

MSDN documentation for Type.GetType(string)給出了包括「父類和嵌套類」的各種類型(泛型類型,參數,非託管指針等)的語法表。

增加這些線路的問題的示例代碼:

string typeName1 = typeof(Sample.Program.Vegetable).FullName; 
string typeName2 = typeof(Vegetable).FullName; 

將證明string類型名稱等於Sample.Program+Vegetable

ECMA-335分區IV的相關CLILibrary.xml提供本公約確定的細節。 ECMA-335中的Type.GetType(string)語法表與MSDN文檔中使用的語法表完全相同。

相關問題