在C#中,对象初始值设定项可以设置公共非只读字段和属性。
但是,对于匿名类型,属性是只读的。那么.NET如何在对象初始化时设置它们呢?
答案 0 :(得分:7)
与所有只读属性一样,它们可以在构造函数中设置。
使用它生成匿名类型的构造函数,并通过它设置字段。
答案 1 :(得分:3)
匿名类型的对象初始值设定项的行为与普通对象初始值设定项不同。即它不直接设置属性。它被转换为对构造函数的调用,这可以改变只读字段。
答案 2 :(得分:1)
此外,可以通过反射或在创建后通过修补托管代码来设置它们。
E.g。只需使用适当的绑定标志获取字段,然后枚举并使用正确的参数调用SetValue ...