/// <summary> /// 获取对象实例 /// </summary> /// <param name="className">类名(包括名称空间)</param> /// <param name="assemblyPath">程序集名称</param> /// <returns></returns> public static T GetInstance(string className, string assemblyPath) { try { var info = new SingleInstances.str_instance_info() { ClassName = className, AssemblyPath = assemblyPath }; if (SingleInstances._instances.ContainsKey(info)) { return((T)SingleInstances._instances[info]); } Assembly ass = Assembly.LoadFrom(assemblyPath); Type t = ass.GetType(className); if (t == null) { return(default(T)); } var obj = (T)ass.CreateInstance(className); if (obj != null) { SingleInstances._instances.Add(info, obj); } return(obj); }catch (Exception e) { System.Windows.MessageBox.Show(e.ToString()); return(default(T)); } }
/// <summary> /// 释放对象实例 /// </summary> public static void Release() { var info = new SingleInstances.str_instance_info() { ClassName = typeof(T).FullName, AssemblyPath = typeof(T).Assembly.ManifestModule.Name }; if (SingleInstances._instances.ContainsKey(info)) { SingleInstances._instances.Remove(info); } }