如何将项目添加到初始化的对象:
object obj = new { blah = "asdf" };
如果我想添加另一个键值对,我会怎么做?
一旦使用该初始化器语法创建对象,就无法修改对象的匿名类型定义。也就是说,一旦你用 初始化它{ blah = "asdf" }
,它就只有那个blah
属性。你不能添加另一个。这是因为匿名类型是静态类型。
但是,对于一个对象,ExpandoObject
答案是有效的。dynamic
请参阅其他答案。
如果您真的只是想管理一组键值对(有点基于您表达问题的方式),请使用字典。
var kvp = new Dictionary<string, string>
{
{ "blah", "asdf" }
};
kvp.Add("womp", "zxcv");
@BoltClock 是正确的。另一种选择是使用 ExpandoObject,但会失去智能感知。
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
// sometime later
obj.somethingelse = "dfgh";
// obj now has 'blah' and 'somethingelse' 'properties'
一旦你定义了一个这样的对象,你就完成了。你不能给它添加任何东西。
但是,如果您使用的是 C# 4.0,则始终可以使用动态类型:
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
obj.blahBlah = "jkl;";