如何使用Type.GetType(string)获取嵌套类的类型

我可以创建一个具有完全限定名称的新类,如Namespace.OuterClass.NestedClass 。 但是尝试使用Type.GetType("Namespace.OuterClass.NestedClass")获取类型将返回null 。 这是示例代码:

 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用于嵌套类?

C#完全限定名称的字符串值在类之间使用+ 。 使用Type.GetType("Namespace.OuterClass+NestedClass")按字符串获取类型。

Type.GetType(string) MSDN文档给出了各种类型(generics类型,参数,非托管指针等)的语法表,包括“父类和嵌套类”。

将这些行添加到问题的示例代码中:

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

将certificate字符串类型名称等于Sample.Program+Vegetable

ECMA-335分区IV的关联CLILibrary.xml为此约定提供了明确的详细信息。 ECMA-335中的Type.GetType(string)语法表与MSDN文档中使用的语法表相同。