我想做下面调用的懒惰初始化。我在构造对象时知道T的类型。
T facade = (T)Activator.CreateInstance(typeof(T), param);
有没有办法实现这个目标?
答案 0 :(得分:3)
您可以继承Lazy<T>
,如下所示:
public class LazyActivator<T> : Lazy<T>
{
public LazyActivator(params object[] args) : base(() => (T)Activator.CreateInstance(typeof(T), args))
{
}
}
然后:
LazyActivator<List<int>> lazyList = new LazyActivator<List<int>>(5);
如果您需要List<int>
(有Capacity == 5
)
List<int> list = lazyList.Value;