【问题标题】:Init lazy property with dynamic property使用动态属性初始化惰性属性
【发布时间】:2012-11-25 12:52:36
【问题描述】:

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

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

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

懒惰不允许这样做。

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

【问题讨论】:

  • 你能显示类的定义吗?

标签: c# generics dynamic reflection lazy-evaluation


【解决方案1】:

试试这个:

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

lazyType.Value;

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2023-03-23
    相关资源
    最近更新 更多