千家信息网

反射reflection的使用方法

发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,这篇文章主要介绍"反射reflection的使用方法",在日常操作中,相信很多人在反射reflection的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"反射r
千家信息网最后更新 2024年10月05日反射reflection的使用方法

这篇文章主要介绍"反射reflection的使用方法",在日常操作中,相信很多人在反射reflection的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"反射reflection的使用方法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

//反射
public static void Reflection()
{

//调用非静态方法

// 1.Load(命名空间名称),GetType(命名空间.类名)
Type type = Assembly.Load("ConsoleApp").GetType("ConsoleApp.Program");//动态加载dll 并获取类型
//2.GetMethod(需要调用的方法名称)
MethodInfo method = type.GetMethod("GetReflect", new Type[] { typeof(string), typeof(int) });
// 3.调用的实例化方法需要创建类型的一个实例
object obj = Activator.CreateInstance(type);
//4.方法需要传入的参数
object[] parameters = new object[] { "xxx", 10 };
// 5.调用方法
string result = (string)method.Invoke(obj, parameters);

//调用静态方法

type.InvokeMember("GetReflect", System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static |
System.Reflection.BindingFlags.Public, null, null, new object[] { "sss", 15 });

//获取方法名称

MethodInfo[] info = typeof(Program).GetMethods();
foreach (MethodInfo item in info)
{
Console.WriteLine(item.Name);
var parames = item.GetParameters();
foreach(var parame in parames)
{
Console.WriteLine(parame.Name + "--" + parame.ParameterType.Name);
}
}

//获取对象的属性及类型
Type tt = typeof(User);
var fields = tt.GetProperties();
foreach (var item in fields)
{
Console.WriteLine(item.Name + ":" + item.GetValue(user, null) + ":" + item.PropertyType);
}

//获取对象的属性并赋值,调用类中的方法

Type projectType = typeof(User);
object projectInstance = Activator.CreateInstance(projectType);

PropertyInfo propertyName = projectType.GetProperty("name");
propertyName.SetValue(projectInstance, "小明");
var projectName = propertyName.GetValue(projectInstance);

PropertyInfo propertyAge = projectType.GetProperty("age");
propertyAge.SetValue(projectInstance, 99, null);
var projectAge = propertyAge.GetValue(projectInstance);

Console.WriteLine("姓名:{0} 年龄:{1}", projectName, projectAge);

MethodInfo method1 = projectType.GetMethod("GetReflect", new Type[] { typeof(string), typeof(int) });
object[] parsArray = { "武大郎",55 };
method1.Invoke(projectInstance, parsArray);

}

public static string GetStaticReflect(string name, int age)
{
Console.WriteLine("反射执行了" + name + "今年" + age + "岁了");
return name + "123";
}

public class User
{
public string name { get; set; }
public int age { get; set; }

public void GetReflect(string name, int age)
{
Console.WriteLine("User反射执行了" + name + "今年" + age + "岁了");
}
}

到此,关于"反射reflection的使用方法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0