GenericUtils.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Text;
  3. namespace CB.Common
  4. {
  5. public class GenericUtils
  6. {
  7. /// <summary>
  8. /// 泛型类反射实例化
  9. /// </summary>
  10. /// <typeparam name="T"></typeparam>
  11. /// <param name="typeName">需反射泛型类的类型型 格式:类路劲,类所属程序集</param>
  12. /// <param name="typeArgs">当前泛型类型定义的类型参数组成的类型数组的元素</param>
  13. /// <returns></returns>
  14. public static T CreateInstance<T>(string typeName, Type[] typeArgs)
  15. {
  16. if (null == typeArgs || 0 >= typeArgs.Length)
  17. return (T)Activator.CreateInstance(Type.GetType(typeName, false, true));
  18. string[] t = typeName.Split(',');
  19. StringBuilder sp = new StringBuilder();
  20. sp.Append(t[0]);
  21. sp.Append("`");
  22. sp.Append(typeArgs.Length);
  23. sp.Append("[");
  24. foreach (var item in typeArgs)
  25. {
  26. sp.AppendFormat("[{0}]", item.AssemblyQualifiedName);
  27. }
  28. sp.Append("],");
  29. sp.Append(t[1]);
  30. return (T)Activator.CreateInstance(Type.GetType(sp.ToString(), false, true));
  31. }
  32. }
  33. }