zoukankan      html  css  js  c++  java
  • C#:反射

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _001反射
    {
        class Program
        {
            static void Main(string[] args)
            {
                //元数据:就是程序的字段方法,程序本身或程序集,文本信息
                //反射:在程序运行状态下,我们获得元数据的行为,反射用到的是Type类
                MyClass my = new MyClass();
                //去设置反射对象
                //1.找到反射对象的方式之1通过类的对象查找
                Type type = my.GetType();
                //2.通过类型查看反射对象
                //Type type1 = typeof(MyClass);
                ////3.通过命名空间查找反射对象
                //Type type2 = Type.GetType("_001反射.MyClass");
                //Console.WriteLine(type2);
    
                //通过这里面的反射对象获取到所有的公有字段的信息
                //FieldInfo[] fields = type.GetFields();
                //foreach (var item in fields)
                //{
                //    Console.WriteLine(item);
                //}
                //object obj = Activator.CreateInstance(type);
    
                //fields[0].SetValue(obj, 20);
                //fields[1].SetValue(obj, "张三");
                //fields[2].SetValue(obj, 30);
                //fields[3].SetValue(obj, 50);
                //foreach (var item in fields)
                //{
                //    Console.WriteLine(item.GetValue(obj));
                //}
                //拿到反射对象的类型,命名空间和程序集
                //Console.WriteLine(type.Name);
                //Console.WriteLine(type.Namespace);
                //Console.WriteLine(type.Assembly);
    
                //拿到反射对象的属性信息
                //PropertyInfo[] info= type.GetProperties();
                //foreach (var item in info)
                //{
                //    Console.WriteLine(item);
                //}
    
                //拿到反射对象的方法
    
                //MethodInfo[] meInfo= type.GetMethods();
                //foreach (var item in meInfo)
                //{
                //    Console.WriteLine(item);
                //}
    
                //拿到静态方法
    
                //MethodInfo mi = type.GetMethod("Test3");
                //mi.Invoke(null, null);
                //MethodInfo mii = type.GetMethod("Test4");
                //mii.Invoke(null, new object[] { 10 });
    
                ////拿到非静态方法
                //MethodInfo me = type.GetMethod("Test1");
                //object obj = Activator.CreateInstance(type);
                //me.Invoke(obj, null);
                //MethodInfo mee = type.GetMethod("Test2");
                //mee.Invoke(obj,new object[] { "张三"});
    
                //拿到程序集中的所有类型
    
               Assembly ab=   type.Assembly;
    
               Type[] t= ab.GetTypes();
                foreach (var item in t)
                {
                    Console.WriteLine(item);
                }
    
            }
        }
    }
    莫说我穷的叮当响,大袖揽清风。 莫讥我困时无处眠,天地做床被。 莫笑我渴时无美酒,江湖来做壶。
  • 相关阅读:
    DropDownList 禁止选择某一项
    C语言文件操作函数(ANSI)详解(二)
    c语言中break与continue的区别
    指针函数
    C语言文件操作函数(ANSI)详解(一)
    结构体指针
    ASCII\UNICODE编码的区别
    函数调用二维数组例子
    getchar()函数getch()函数区别
    C语言 二维数组做函数参数的几种情况
  • 原文地址:https://www.cnblogs.com/huang--wei/p/10062627.html
Copyright © 2011-2022 走看看