3

在 C# 中,对象初始值设定项可以设置公共的非只读字段和属性。

但是,对于匿名类型,属性是只读的。那么.NET 是如何在对象初始化时设置它们的呢?

4

3 回答 3

7

像所有只读属性一样,它们可以在构造函数中设置。

使用它生成匿名类型的构造函数,并通过它设置字段。

于 2012-05-18T09:31:15.533 回答
3

匿名类型的对象初始化器的行为不像普通的对象初始化器。即它不直接设置属性。它被翻译成对构造函数的调用,它可以更改只读字段。

于 2012-05-18T09:32:43.017 回答
1

此外,它们可以通过反射或在创建后通过修补托管代码来设置。

例如,只需获取具有适当绑定标志的字段,然后枚举并使用正确的参数调用 SetValue ......

于 2012-05-18T09:31:55.450 回答