是否可以在匿名类型的属性上实现setter

cll*_*pse 1 c# generics

考虑以下:

var o = new { Foo = "foo", Bar = "bar" };
Run Code Online (Sandbox Code Playgroud)

此实例是只读的,因为匿名类型不像类那样实现setter:

public class O
{
    public String Foo { get; set; }
    public String Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是否可以"打开"匿名实例并允许其属性被更改?最好用比创建课程所需的字符少的字符.

我想也许这可以用Object上的扩展方法来完成; o.SetProperty(o.Foo, "foo!");,如果你不能在构造对象时在线实现setter.

Bri*_*sen 7

不,因为C#中的匿名类型是不可变的设计.