使用反射对对象进行惰性初始化

本文关键字:初始化 对象 反射 | 更新日期: 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;