我像下边这样写不对了,把代码放上来,高手帮我看看怎么改,很简短的代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CMD { class SingleInstanceFactory<T> { public static T t; private void SingleInstanceFactory(){} public static T CreateInstance() { if (t == null) { t = new T(); } return t; } } }
编译都不通过,报的错如下 :
要怎么改才能完成这个功能呢?谢谢!
不知道是LZ省略了还是就没有?我好像没看到 工厂产生自己单例的代码。
单例是产生自己,工厂还要有产生对象的方法,
你写的 CreateInstance是要产生单例么?是的话返回不该是SingleInstanceFactory么?咋是T。。。。,
而返回T的代码应该是工厂提供的方法,了解一下泛型约束, 加上where T : new()就行。
今天刚学的东西。。不知道理解对了么。。
1 #region GetInstance 2 private readonly OperationFactory getInstance = new OperationFactory(); 3 private OperationFactory() 4 { } 5 6 public OperationFactory GetInstance 7 { 8 get 9 { 10 return getInstance; 11 } 12 } 13 #endregion
t = (T)Activator.CreateInstance(typeof(T))
亲可以了解一下泛型约束, 加上where T : new()
应该可以解决你的问题。
方法一:class SingleInstanceFactory<T> where T : new()
方法二:t = (T)Activator.CreateInstance(typeof(T))
楼主可以抽时间看一下泛型