• C#反射机制 Type类型


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    
    
    namespace 基于System.Type的反射
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1.使用GetType() 反射类型
                string a = "Hello world.";
    
                Type t = a.GetType();
                Console.WriteLine(t.FullName);
    
    
                //2.使用Type.GetType() 反射类型
                Type t1 = Type.GetType("System.String", false, true);
                Console.WriteLine(t1.FullName);
    
                //3.使用typeof获取类型
                Type t2 = typeof(string);
                Console.WriteLine(t2.FullName);
    
                //通过方法获取对象的方法
                GetMethods(t, BindingFlags.Public | BindingFlags.Instance);
    
    
               // Console.WriteLine("join Methods:{0}",t.GetMethod("Copy"));
               // Console.WriteLine("-----------------------------------------------------------");
    
                // //知识点补充:抽象类不能实例化 
    
    
                #region 动态加载程序集
                
              
                // //动态加载.net2.0所有程序集,并获取所有类型
                Assembly objAssembly;
                objAssembly = Assembly.Load("mscorlib,2.0.0.0,Neutral,b77a5c5619934e089");
    
                Type[] types = objAssembly.GetTypes();
                foreach (var t3 in types)
                {
                    Console.WriteLine(t3.Name);
                }
    
                //获取当前执行的程序集
                objAssembly = Assembly.GetExecutingAssembly();
                //检查对象(基于System.Type的反射.car)
                Type t4 = objAssembly.GetType("基于System.Type的反射.car", false, true);
                //创建一个当前对象的实例
                object obj = Activator.CreateInstance(t4);
                //获取当前对象中存在的方法
                MethodInfo mi = t4.GetMethod("IsMoveing");
                //判断当前对象是否存在指定的方法 obj指实例化对象,null指IsMoveing()的参数
                var ismoving = (bool)mi.Invoke(obj, null);
    
                if(ismoving)
                {
                    Console.WriteLine("Yes");
                }
                else
                {
                    Console.WriteLine("NO");
                }
                #endregion
                Console.ReadLine();
               
            }
    
            /// <summary>
            /// 获取对象的所有方法 GetProperty()获取所有属性   GetFields()获取所有字段
            /// </summary>
            /// <param name="t"></param>
            public static void GetMethods(Type t,BindingFlags f)
            {
                MethodInfo[] mi = t.GetMethods(f);
                foreach (MethodInfo item in mi)
                {
                    Console.WriteLine("{0}",item.Name);
                }
            }
    
        }
    
    
        class car
        {
            public bool IsMoveing()
            { 
            return true;
            }
        
        }
    }
  • 相关阅读:
    iOS判断为空或者只为空格
    一个CRM OData的性能问题分析
    什么是SAP UI5的Component-preload.js
    SAP CRM的状态管理和权限控制的集成
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    利用S_MEMORY_INSPECTOR分析内存泄漏问题
    SAP CRM WebClient UI的搜索条件是怎么渲染出来的
    SAP CRM WebClient UI的内存清理策略分析
    SAP CRM产品主数据应用里value node和model node的转换
    如何查找SAP Fiori UI上某个字段对应的底层数据库表
  • 原文地址:https://www.cnblogs.com/nimorl/p/12588093.html
Copyright © 2020-2023  润新知