C# 使用反射延迟初始化对象

C# 使用反射延迟初始化对象,c#,lazy-initialization,C#,Lazy Initialization,我想对下面的调用进行延迟初始化。在构造对象时,我知道T的类型 T facade = (T)Activator.CreateInstance(typeof(T), param); 有没有办法做到这一点?您可以将Lazy子类化,如下所示: public class LazyActivator<T> : Lazy<T> { public LazyActivator(params object[] args) : base(() => (T)Activator.C

我想对下面的调用进行延迟初始化。在构造对象时,我知道T的类型

T facade = (T)Activator.CreateInstance(typeof(T), param);

有没有办法做到这一点?

您可以将
Lazy
子类化,如下所示:

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> list = lazyList.Value;