使用Linq表达式

时间:2015-08-23 09:47:33

标签: c# reflection il linq-expressions

给定FieldInfo,可以设置C#readonly / CLR InitOnly成员字段。

我何时以及为什么要这样做? 对于序列化程序,我创建了一个对象类型的空实例,然后我填充了数据流中的所有字段。

对于实际问题:

有没有办法使用Linq Expressions实现这一目标? 如果传递指向readonly / initonly字段的表达式,则Expression.Assign会导致异常。

或者我将不得不求助于IL发射(比FieldInfo更快)

1 个答案:

答案 0 :(得分:1)

不,Expression.Assign检查字段的可分配性,即使你可以破解它来创建赋值表达式,它也不可验证且无法运行。发送IL是最快的方法,它还允许分配指针(LINQ表达式不支持)。您可以看到here如何发出类似的方法。