我有这样的对象:
object rt = new {
page = 1,
};
现在我怎么能为这个对象添加新值?我的意思是这样的:
rt += { code = 5 };
怎么可能?
答案 0 :(得分:9)
听起来更像是你想要Dictionary<string,int>
var rt = new Dictinary<string,int>(){
{"page",1}
};
rt.Add("code",5);
您也可以使用System.Dynamic.ExpandoObject
执行此操作 - 但这只是字典中的一个奇特的包装。
dynamic rt = new ExpandoObject();
rt.page = 1;
rt.code = 5;
Console.WriteLine(rt.page);
答案 1 :(得分:8)
使用ExpandoObject
dynamic rt = new ExpandoObject();
rt.page = 1;
rt.code = 5;
答案 2 :(得分:3)
实际问题是:为什么你需要这个?想象一下,你的对象是一个命名对象,例如像这样:
var m = new MyClass { MyProperty = ... };
带
class MyClass
{
public string MyProperty;
}
你想要做的是,在运行时向该类添加另一个属性,这是不可能的。您无法执行以下操作:
m.AnotherProperty = ...
因为AnotherProperty
没有在该类型上定义。
即使声明m
dynamic
也无法帮助您,因为实际类型(MyClass
)对AnotherProperty
一无所知}。
dynamic a = new MyClass { MyProperty = ... };
a.AnotherProperty = ...;
所以对你的问题的简单回答是:不,你不能在运行时向一个类添加成员。