Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 C# 中,对象初始值设定项可以设置公共的非只读字段和属性。
但是,对于匿名类型,属性是只读的。那么.NET 是如何在对象初始化时设置它们的呢?
像所有只读属性一样,它们可以在构造函数中设置。
使用它生成匿名类型的构造函数,并通过它设置字段。
匿名类型的对象初始化器的行为不像普通的对象初始化器。即它不直接设置属性。它被翻译成对构造函数的调用,它可以更改只读字段。
此外,它们可以通过反射或在创建后通过修补托管代码来设置。
例如,只需获取具有适当绑定标志的字段,然后枚举并使用正确的参数调用 SetValue ......