C# 反射:代码示例和解释
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 著作权归作者所有。请勿转载和采集!