php房产中介网站源码,网站提交网址,网站建设策划模板下载,ps和dw怎么做网站C# 反射#xff08;Reflection#xff09;是一个强大的机制#xff0c;允许在运行时检查程序集、模块和类型的元数据#xff0c;以及动态创建和操作类型的实例。通过反射#xff0c;你可以在运行时获取和设置对象的属性、调用方法、创建新对象#xff0c;甚至可以加载新的…C# 反射Reflection是一个强大的机制允许在运行时检查程序集、模块和类型的元数据以及动态创建和操作类型的实例。通过反射你可以在运行时获取和设置对象的属性、调用方法、创建新对象甚至可以加载新的程序集。
反射的主要特点和用途
检查对象类型能够检查任何对象的类型。动态创建实例可以动态创建类的实例。获取和设置属性和字段能够在运行时获取或修改属性和字段的值。动态调用方法可以动态调用对象的方法。程序集和模块操作可以加载和分析程序集和模块。自定义特性处理反射允许读取自定义特性。
反射的使用示例
1. 获取类型信息
using System;public class MyClass
{public int MyProperty { get; set; }public void MyMethod() { }
}public class Program
{public static void Main(){Type myType typeof(MyClass);Console.WriteLine(Properties:);foreach (var prop in myType.GetProperties()){Console.WriteLine(prop.Name);}Console.WriteLine(Methods:);foreach (var method in myType.GetMethods()){Console.WriteLine(method.Name);}}
}2. 动态创建实例
using System;public class MyClass
{public MyClass(){Console.WriteLine(MyClass instance created);}
}public class Program
{public static void Main(){Type myType typeof(MyClass);MyClass myClassInstance (MyClass)Activator.CreateInstance(myType);}
}3. 获取和设置属性值
using System;
using System.Reflection;public class MyClass
{public string Name { get; set; }
}public class Program
{public static void Main(){MyClass myClass new MyClass();PropertyInfo propInfo myClass.GetType().GetProperty(Name);// 设置属性值propInfo.SetValue(myClass, Test Name);// 获取属性值string value (string)propInfo.GetValue(myClass);Console.WriteLine(Name: value);}
}4. 动态调用方法
using System;
using System.Reflection;public class MyClass
{public void MyMethod(string message){Console.WriteLine(Message: message);}
}public class Program
{public static void Main(){MyClass myClass new MyClass();MethodInfo methodInfo myClass.GetType().GetMethod(MyMethod);// 动态调用方法methodInfo.Invoke(myClass, new object[] { Hello Reflection });}
}这些示例展示了反射的基本使用方法包括获取类型信息、创建类实例、操作属性和字段以及动态调用方法。反射是一个功能强大但相对高开销的特性因此在性能敏感的应用中应谨慎使用。