使用反射对对象进行惰性初始化
本文关键字:初始化 对象 反射 | 更新日期: 2023-09-27 18:00:57
我想对下面的调用进行惰性初始化。在构造对象时,我知道T的类型。
T facade = (T)Activator.CreateInstance(typeof(T), param);
有办法做到这一点吗?
您可以将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;