如何使用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文档中使用的语法表相同。