1234567891011121314151617181920212223242526272829303132333435 |
- using System;
- using System.Text;
- namespace CB.Common
- {
- public class GenericUtils
- {
- /// <summary>
- /// 泛型类反射实例化
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="typeName">需反射泛型类的类型型 格式:类路劲,类所属程序集</param>
- /// <param name="typeArgs">当前泛型类型定义的类型参数组成的类型数组的元素</param>
- /// <returns></returns>
- public static T CreateInstance<T>(string typeName, Type[] typeArgs)
- {
- if (null == typeArgs || 0 >= typeArgs.Length)
- return (T)Activator.CreateInstance(Type.GetType(typeName, false, true));
- string[] t = typeName.Split(',');
- StringBuilder sp = new StringBuilder();
- sp.Append(t[0]);
- sp.Append("`");
- sp.Append(typeArgs.Length);
- sp.Append("[");
- foreach (var item in typeArgs)
- {
- sp.AppendFormat("[{0}]", item.AssemblyQualifiedName);
- }
- sp.Append("],");
- sp.Append(t[1]);
- return (T)Activator.CreateInstance(Type.GetType(sp.ToString(), false, true));
- }
- }
- }
|