一句话搞定的处理:
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;
}
本文介绍了如何利用C#的反射特性,通过类名的字符串形式来动态创建并实例化类。在多线程环境下,为确保线程安全,建议配合锁机制进行操作。
3298

被折叠的 条评论
为什么被折叠?



