具有动态属性的Init lazy属性

时间:2012-12-07 10:43:17

标签: c# generics dynamic reflection lazy-evaluation

我想用反射动态初始化一个懒惰的属性。

我循环我的对象属性,我想创建一个这样的属性的延迟加载:

Lazy<propertyInfo.propertyType> = new lazy<propertyInfo.propertyType>(() => methodInfo.invoke)

懒惰不允许这样做。

有没有办法用反射做到这一点? (也许是activator.createinstance)

1 个答案:

答案 0 :(得分:1)

试试这个:

Lazy<object> lazyType = new Lazy<object>(() => {
    return Activator.CreateInstance(propertyInfo.propertyType);
});

lazyType.Value;

当你访问Value属性时,Lazy对象将调用Func,然后返回属性类型的实例。

希望有所帮助