C#反射操作常用方法

       /// <summary>
        /// 生成程序集对象
        /// </summary>
        /// <param name="assemblyPath"></param>
        /// <returns></returns>
        public static Assembly GetAssembly(string assemblyPath)
        {
            return Assembly.LoadFile(assemblyPath);
        }

        /// <summary>
        /// 获取指定名称的类型对象
        /// </summary>
        /// <param name="assembly"></param>
        /// <param name="fullName"></param>
        /// <returns></returns>
        public static Type GetTypeInAssembly(Assembly assembly, string fullName)
        {
            return assembly.GetType(fullName);
        }

        /// <summary>
        /// 获取对象的类型
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static Type GetTypeFromObject(object obj)
        {
            return obj.GetType();
        }

        /// <summary>
        /// 根据类型的字符串名称生成类型对象
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static Type GetTypeFromString(string name)
        {
            return Type.GetType(name);
        }

        /// <summary>
        /// 调用无参构造函数生成实例
        /// </summary>
        /// <param name="type">类型</param>
        /// <returns></returns>
        public static object CreateInstance(Type type)
        {
            return Activator.CreateInstance(type);
        }

        /// <summary>
        /// 调用构造函数生成实例
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="obj">构造函数参数集合</param>
        /// <returns></returns>
        public static object CreateInstance(Type type, object[] obj)
        {
            return Activator.CreateInstance(type, obj); 
        }

        /// <summary>
        /// 调用构造函数生成实例
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="pt">构造函数参数类型集合</param>
        /// <param name="obj">构造函数参数集合</param>
        /// <returns></returns>
        public static object CreateInstance(Type type, Type[] pt, object[] obj)
        {
            return type.GetConstructor(pt).Invoke(obj);    
        }

        /// <summary>
        /// 根据参数类型获取构造函数
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="paramTypes">构造函数参数类型</param>
        /// <returns></returns>
        public static ConstructorInfo GetConstructor(Type type,Type[] paramTypes)
        {
            return type.GetConstructor(paramTypes);
        }

        /// <summary>
        /// 获取构造函数
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static ConstructorInfo[] GetConstructors(Type type)
        {
            return type.GetConstructors();
        }

        /// <summary>
        /// 根据字段名称获取类的字段的信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static FieldInfo GetPublicField(Type type, string name)
        {
            return type.GetField(name);
        }

        /// <summary>
        /// 获取类的字段的信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static FieldInfo[] GetPublicFields(Type type)
        {
            return type.GetFields();
        }

        /// <summary>
        /// 根据属性名称获取类的属性的信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static PropertyInfo GetPublicProperty(Type type, string name)
        {
            return type.GetProperty(name);
        }

        /// <summary>
        /// 获取类的属性的信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static PropertyInfo[] GetProperties(Type type)
        {
            return type.GetProperties();
        }

        /// <summary>
        /// 根据事件名称获取类的事件的信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static EventInfo GetPublicEvent(Type type, string name)
        {
            return type.GetEvent(name);
        }

        /// <summary>
        /// 获取类的事件的信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static EventInfo[] GetPublicEvents(Type type)
        {
            return type.GetEvents();
        }

        /// <summary>
        /// 根据方法名称获取类的公开方法的信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static MethodInfo GetPublicMethod(Type type, string name)
        {
            return type.GetMethod(name);
        }

        /// <summary>
        /// 获取类的公开方法的信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static MethodInfo[] GetPublicMethods(Type type)
        {
            return type.GetMethods();
        }

        /// <summary>
        /// 根据名称获取类的所有成员的信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static MemberInfo[] GetPublicMember(Type type, string name)
        {
            return type.GetMember(name);
        }

        /// <summary>
        /// 获取类的所有成员的信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static MemberInfo[] GetPublicMembers(Type type)
        {
            return type.GetMembers();
        }

        /// <summary>
        /// 验证一下parentType是不是childType的父类
        /// 判断是否可以将childType对象赋值给parentType对象
        /// </summary>
        /// <param name="parentType"></param>
        /// <param name="childType"></param>
        /// <returns></returns>
        public static bool IsParentTo(Type parentType,Type childType)
        {
            return parentType.IsAssignableFrom(childType);
        }

        /// <summary>
        /// 验证一下childType是不是parentType的子类
        /// </summary>
        /// <param name="childType"></param>
        /// <param name="parentType"></param>
        /// <returns></returns>
        public static bool IsSubClassTo(Type childType, Type parentType)
        {
            return childType.IsSubclassOf(parentType);
        }

        /// <summary>
        /// 验证obj是否是type的实例
        /// </summary>
        /// <param name="type"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool IsAInstanceTo(Type type, object obj)
        {
            return type.IsInstanceOfType(obj);
        } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值