Example #1
0
        /// <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)); }
        }
Example #2
0
        /// <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);
            }
        }