gpt4 book ai didi

c# - 使用 Linq 表达式设置一个 readoly/InitOnly 成员字段

转载 作者:行者123 更新时间:2023-11-30 17:42:05 25 4
gpt4 key购买 nike

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

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

实际问题:

有没有一种方法也可以使用 Linq 表达式来实现这一点?如果传递指向只读/初始化字段的表达式,Expression.Assign 会导致异常。

或者我是否必须求助于 IL emit 来执行此操作(比 FieldInfo 更快)

最佳答案

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

关于c# - 使用 Linq 表达式设置一个 readoly/InitOnly 成员字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com