using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Leit.FrameWork.Reflection
|
|
{
|
|
public partial class Reflect
|
|
{
|
|
/// <summary>
|
|
/// 获取无泛型类无参构造函数实例
|
|
/// </summary>
|
|
/// <typeparam name="T">返回实例类型</typeparam>
|
|
/// <param name="fullName">Dll完整路径</param>
|
|
/// <param name="className">要实例化的类名称</param>
|
|
/// <returns></returns>
|
|
public static T GetInstance<T>(string fullName, string className)
|
|
{
|
|
Assembly assembly = Assembly.LoadFile(fullName);
|
|
Type type = assembly.GetType(className);
|
|
|
|
return (T)Activator.CreateInstance(type);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取无泛型类有参构造函数实例
|
|
/// </summary>
|
|
/// <typeparam name="T">返回实例类型</typeparam>
|
|
/// <param name="fullName">Dll完整路径</param>
|
|
/// <param name="className">要实例化的类名称</param>
|
|
/// <param name="paramArray">构造函数参数数组</param>
|
|
/// <returns></returns>
|
|
public static T GetInstance<T>(string fullName, string className, params object[] paramArray)
|
|
{
|
|
Assembly assembly = Assembly.LoadFile(fullName);
|
|
Type type = assembly.GetType(className);
|
|
|
|
return (T)Activator.CreateInstance(type, paramArray);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取泛型类无参构造函数实例
|
|
/// </summary>
|
|
/// <typeparam name="T">返回实例类型</typeparam>
|
|
/// <param name="fullName">Dll完整路径</param>
|
|
/// <param name="className">要实例化的类名称</param>
|
|
/// <param name="GenericTypeArray">泛型参数数组</param>
|
|
/// <returns></returns>
|
|
public static T GetInstance<T>(string fullName, string className, Type[] genericTypeArray)
|
|
{
|
|
Assembly assembly = Assembly.LoadFile(fullName);
|
|
Type type = assembly.GetType(className + "`" + genericTypeArray.Length);
|
|
Type genericType = type.MakeGenericType(genericTypeArray);
|
|
return (T)Activator.CreateInstance(genericType);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取泛型类有参构造函数实例
|
|
/// </summary>
|
|
/// <typeparam name="T">返回实例类型</typeparam>
|
|
/// <param name="fullName">Dll完整路径</param>
|
|
/// <param name="className">要实例化的类名称</param>
|
|
/// <param name="GenericTypeArray">泛型参数数组</param>
|
|
/// <param name="paramArray">构造函数参数数组</param>
|
|
/// <returns></returns>
|
|
public static T GetInstance<T>(string fullName, string className, Type[] genericTypeArray, object[] paramArray)
|
|
{
|
|
Assembly assembly = Assembly.LoadFile(fullName);
|
|
Type type = assembly.GetType(className + "`" + genericTypeArray.Length);
|
|
Type genericType = type.MakeGenericType(genericTypeArray);
|
|
return (T)Activator.CreateInstance(genericType, paramArray);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|