C#如何在匿名对象初始化时设置只读属性

时间:2012-05-18 09:28:52

标签: c# anonymous-types object-initializers

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

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

匿名类型的对象初始值设定项的行为与普通对象初始值设定项不同。即它不直接设置属性。它被转换为对构造函数的调用,这可以改变只读字段。

答案 2 :(得分:1)

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

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