C# 使用Linq表达式设置readoly/InitOnly成员字段

C# 使用Linq表达式设置readoly/InitOnly成员字段,c#,reflection,il,linq-expressions,C#,Reflection,Il,Linq Expressions,给定一个字段信息,可以设置一个C#只读/CLR InitOnly成员字段 我什么时候以及为什么要这样做? 对于序列化程序,我创建一个对象类型的空实例,然后填充数据流中的所有字段 对于实际问题: 是否有一种方法也可以使用Linq表达式来实现这一点? 如果传递指向readonly/initonly字段的表达式,则表达式.Assign会导致异常 或者我必须求助于IL emit(比FieldInfo更快)不,表达式。Assign检查字段的可分配性,即使您可以对其进行黑客攻击以创建分配表达式,它也无法验证

给定一个
字段信息
,可以设置一个C#
只读
/CLR InitOnly成员字段

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

对于实际问题:

是否有一种方法也可以使用Linq表达式来实现这一点? 如果传递指向readonly/initonly字段的表达式,则
表达式.Assign
会导致异常


或者我必须求助于IL emit(比FieldInfo更快)

不,
表达式。Assign
检查字段的可分配性,即使您可以对其进行黑客攻击以创建分配表达式,它也无法验证且无法运行。发出IL是最快的方法,它还允许分配指针(LINQ表达式不支持)。您可以看到如何发出类似的方法。

我对LINQ不是很熟悉,但有没有一种方法可以在初始化时(即在创建对象时)仅指定初始化字段,而不是在创建对象后再尝试?