容器式单例
线程安全
public class ContainerSingleton
{
// 容器
private ContainerSingleton() { }
private static ConcurrentDictionary<string,object> ioc = new ConcurrentDictionary<string, object>();
public static object GetInstance(string className)
{
object instance = null;
if (ioc.ContainsKey(className))
return ioc[className];
try
{
instance = Activator.CreateInstance(Type.GetType(className));
ioc.TryAdd(className, instance);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return instance;
}
return ioc[className];
}
}
简单工厂传递类类型参数可使用枚举。
使用泛型类型约束参数