使用反射延迟初始化对象
Lazy initialization of an object using reflection
我想对下面的调用进行惰性初始化。我在构造对象的时候就知道了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;
我想对下面的调用进行惰性初始化。我在构造对象的时候就知道了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;