您的位置:首页 > 编程语言 > C#

C#反射操作常用方法

2016-11-15 12:50 357 查看
/// <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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息