我有这样的对象:
object rt = new {
page = 1,
};
Run Code Online (Sandbox Code Playgroud)
现在我怎么能为这个对象添加新值?我的意思是这样的:
rt += { code = 5 };
Run Code Online (Sandbox Code Playgroud)
怎么可能?
听起来更像是你想要的 Dictionary<string,int>
var rt = new Dictinary<string,int>(){
{"page",1}
};
rt.Add("code",5);
Run Code Online (Sandbox Code Playgroud)
你也可以这样做System.Dynamic.ExpandoObject- 但这只是一个围绕字典的奇特包装.
dynamic rt = new ExpandoObject();
rt.page = 1;
rt.code = 5;
Console.WriteLine(rt.page);
Run Code Online (Sandbox Code Playgroud)
使用ExpandoObject
dynamic rt = new ExpandoObject();
rt.page = 1;
rt.code = 5;
Run Code Online (Sandbox Code Playgroud)
真正的问题是:为什么你需要这个?想象一下你的对象是一个命名的对象,例如这样:
\n\nvar m = new MyClass { MyProperty = ... };\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\nclass MyClass\n{\n public string MyProperty;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n您想要做的是,在运行时向该类添加进一步的属性,这是不可能的。您可以\xc2\xb4t执行以下操作:
\n\nm.AnotherProperty = ...\nRun Code Online (Sandbox Code Playgroud)\n\n正如AnotherProperty在该类型上定义的 \xc2\xb4t 一样。
即使声明masdynamic也不会帮助您,因为实际类型 ( MyClass) 并不知道 的任何内容AnotherProperty。
dynamic a = new MyClass { MyProperty = ... };\na.AnotherProperty = ...;\nRun Code Online (Sandbox Code Playgroud)\n\n因此,您的问题的简单答案是:不,您可以\xc2\xb4t 在运行时向类添加成员。
\n