c#反射(1)
反射可以读取程序集中代码的内容,程序集一般指(dll或exe文件)。
反射中Type类,这个类太强大了,可以获取到另一个类的名称,命名空间,程序集,以及这个类中的字段,属性,方法。可以方便我们查看某个类的方法,属性,字段。
public void Test1(){Person per = new Person();Type TypeObj = per.GetType();Console.WriteLine(TypeObj.Name); //反射类的名称Console.WriteLine(TypeObj.Namespace); //反射类的命名空间Console.WriteLine(TypeObj.Assembly); //反射类所在的程序集 Console.WriteLine(TypeObj.IsPublic); //反射类是否为公共Console.WriteLine(TypeObj.IsSealed); //反射类是否密封 }public void Test2(){Person per = new Person();Type TypeObj = per.GetType();FieldInfo[] infor = TypeObj.GetFields(); //获取类中的字段foreach (FieldInfo item in infor){Console.WriteLine(item.Name);}Console.WriteLine("--------------");MethodInfo[] MeFor = TypeObj.GetMethods(); //获取类中的方法foreach (MethodInfo item in MeFor){Console.WriteLine(item.Name);}Console.WriteLine("--------------");PropertyInfo[] ProFor = TypeObj.GetProperties(); //获取类中的属性foreach (PropertyInfo item in ProFor){Console.WriteLine(item.Name);}Console.WriteLine("--------------");}
一些运行技巧:Console.ReadLine()作用
从控制台中读取用户输入的一行字符串,很多人添加ReadLine()是为了让程序运行完了停下来,避免控制台窗口被关掉。
Assembly获取类的方法
public void Test1(){Person per = new Person();//得到程序集Assembly ass = per.GetType().Assembly;Console.WriteLine(ass.FullName);//通过程序集得到所有的类Type[] typArray = ass.GetTypes();foreach (Type item in typArray){Console.WriteLine(item.Name);}}public void Test2(){Assembly assObj = Assembly.LoadFrom(@"");//通过程序集得到所有的类Type[] typArray = assObj.GetTypes();foreach (Type item in typArray){Console.WriteLine(item.Name);}}
转载于:https://www.cnblogs.com/Optimism/p/10472744.html
总结
- 上一篇: 【python】基础知识
- 下一篇: C# 操作自定义config文件