反射,通过类名(字符串)获取类

来源:互联网 发布:java后端接口开发技术 编辑:程序博客网 时间:2024/06/03 17:12

一句话搞定的处理:

private static readonly string path = "GCForum";
public static UIViewController GetVC(string vcname){return (UIViewController)Assembly.Load (path).CreateInstance (path + "." + vcname);}

如果考虑线程问题,最好加锁判断:

private static object lockHelper = new object();public static MyCourse _mycourse = null;public static MyCourseLoad _mycourseload= null;
public static UIViewController GetVC(string vcname){UIViewController vc;switch (vcname) {case "MyCourse":vc = CreateMyCourse ();break;case "MyCourseLoad":vc = CreateMyCourseLoad ();break;default :return null;}return vc;}/// <summary>/// 我的课程/// </summary>private static MyCourse CreateMyCourse(){return CreateInstance<MyCourse>(_mycourse, path + ".MyCourse");}/// <summary>/// 我的下载/// </summary>private static MyCourseLoad CreateMyCourseLoad(){return CreateInstance<MyCourseLoad>(_mycourseload, path + ".MyCourseLoad");}/// <summary>/// 实例化/// </summary>public static T CreateInstance<T>(T _instance, string className){if (_instance == null){lock (lockHelper){if (_instance == null){_instance = (T)Assembly.Load(path).CreateInstance(className);}}}return _instance;}