在.NET中,System.Reflection
命名空间提供了丰富的类和方法,用于在运行时检查和操作类型、程序集、模块、接口、成员等元数据信息。要获取类型信息,你可以使用Type
类。以下是一些常见的方法来获取类型信息:
typeof
操作符:
typeof
操作符用于获取指定类型的Type
对象。例如,要获取int
类型的Type
对象,你可以这样做:Type intType = typeof(int);
typeof
操作符获取泛型类型:
如果你有一个泛型类型,你可以使用typeof
操作符并传递类型参数来获取其Type
对象。例如,要获取List<int>
类型的Type
对象,你可以这样做:Type listIntType = typeof(List<int>);
Type.GetType
方法:
Type.GetType
方法用于根据指定的全名获取类型的Type
对象。全名包括命名空间和类型名称。例如,要获取System.Collections.Generic.List<int>
类型的Type
对象,你可以这样做:Type listIntType = Type.GetType("System.Collections.Generic.List`1[System.Int32]");
注意:如果找不到指定的类型,GetType
方法将返回null
。
4. 使用Assembly.GetType
方法:
Assembly.GetType
方法用于根据指定的程序集和类型名称获取类型的Type
对象。例如,要获取当前程序集中MyNamespace.MyClass
类型的Type
对象,你可以这样做:
Type myClassType = Assembly.GetExecutingAssembly().GetType("MyNamespace.MyClass");
注意:如果找不到指定的类型,GetType
方法将返回null
。
5. 使用assembly.DefinedTypes
属性:
你还可以通过访问程序集的DefinedTypes
属性来获取程序集中定义的所有类型的列表。然后,你可以遍历这个列表来查找你感兴趣的类型。例如:
Assembly assembly = Assembly.GetExecutingAssembly();
foreach (Type type in assembly.DefinedTypes)
{
Console.WriteLine(type.FullName);
}
这些方法可以帮助你获取类型的详细信息,如名称、基类、接口、字段、方法等。你可以使用这些信息来在运行时动态地创建对象、调用方法或访问字段等。