C# 反射:代码示例和解释

反射是一种动态获取程序类型信息并在运行时调用程序的技术。C# 中可以使用反射来实现一些高级的操作,比如动态加载程序集、动态创建对象、获取成员信息、调用方法等等。下面是一些常见的反射用法及其代码示例,每个示例都带有注释。

1. 获取类型信息

// 获取类型信息
Type type = typeof(string);
Console.WriteLine('Type name: ' + type.Name + ', Full name: ' + type.FullName);

2. 动态创建对象

// 动态创建对象
Type type = typeof(string);
object obj = Activator.CreateInstance(type);
Console.WriteLine(obj.GetType().FullName);

3. 获取成员信息

// 获取成员信息
Type type = typeof(string);
MemberInfo[] members = type.GetMembers();

foreach (MemberInfo member in members)
{
    Console.WriteLine('Member name: ' + member.Name + ', Member type: ' + member.MemberType);
}

4. 调用方法

// 调用方法
Type type = typeof(string);
object obj = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("ToUpper", new Type[] { });
string result = (string)method.Invoke(obj, null);
Console.WriteLine(result);

5. 获取属性信息

// 获取属性信息
Type type = typeof(string);
PropertyInfo[] properties = type.GetProperties();

foreach (PropertyInfo property in properties)
{
    Console.WriteLine('Property name: ' + property.Name + ', Property type: ' + property.PropertyType);
}

6. 获取字段信息

// 获取字段信息
Type type = typeof(string);
FieldInfo[] fields = type.GetFields();

foreach (FieldInfo field in fields)
{
    Console.WriteLine('Field name: ' + field.Name + ', Field type: ' + field.FieldType);
}

7. 获取构造函数信息

// 获取构造函数信息
Type type = typeof(string);
ConstructorInfo[] constructors = type.GetConstructors();

foreach (ConstructorInfo constructor in constructors)
{
    Console.WriteLine('Constructor name: ' + constructor.Name + ', Constructor parameters: ' + constructor.GetParameters().Length);
}

原文地址: https://www.cveoy.top/t/topic/mVwy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录