如何将项添加到使用{blah ="asdf"}初始化的对象

Bla*_*man 4 c# object-initializer

如何将项添加到初始化为的对象:

object obj = new { blah = "asdf" };
Run Code Online (Sandbox Code Playgroud)

如果我想添加另一个键值对,我怎么样?

Bol*_*ock 10

使用该初始化程序语法创建对象后,无法修改对象的匿名类型定义.也就是说,一旦你初始化它{ blah = "asdf" },它只有该blah属性.你不能添加另一个.这是因为匿名类型是静态类型.

ExpandoObject答案的工作,虽然,对于一个dynamic对象.请参阅其他答案.

如果你真的只是想管理一组键值对(有点基于你提出问题的方式),请使用字典.

var kvp = new Dictionary<string, string>
{
    { "blah", "asdf" }
};

kvp.Add("womp", "zxcv");
Run Code Online (Sandbox Code Playgroud)


Tej*_*ejs 7

@BoltClock是对的.另一种选择是在失去智能感知时使用ExpandoObject.

dynamic obj = new ExpandoObject();
obj.blah = "asdf";

// sometime later

obj.somethingelse = "dfgh";

// obj now has 'blah' and 'somethingelse' 'properties'
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 6

一旦你定义了这样的对象,你就完成了.你不能添加任何东西.

但是,如果您使用的是C#4.0,则可以始终使用动态类型:

dynamic obj = new ExpandoObject();

obj.blah = "asdf";
obj.blahBlah = "jkl;";
Run Code Online (Sandbox Code Playgroud)