将值添加到对象类型c#

use*_*847 2 c# object

我有这样的对象:

object rt = new {
    page = 1,
};
Run Code Online (Sandbox Code Playgroud)

现在我怎么能为这个对象添加新值?我的意思是这样的:

rt += { code = 5 };
Run Code Online (Sandbox Code Playgroud)

怎么可能?

Jam*_*iec 9

听起来更像是你想要的 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)


Raw*_*aew 8

使用ExpandoObject

 dynamic rt = new ExpandoObject();
 rt.page = 1;
 rt.code = 5;
Run Code Online (Sandbox Code Playgroud)


Him*_*ere 4

真正的问题是:为什么你需要这个?想象一下你的对象是一个命名的对象,例如这样:

\n\n
var m = new MyClass { MyProperty = ... };\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
class MyClass\n{\n    public string MyProperty;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您想要做的是,在运行时向该类添加进一步的属性,这是不可能的。您可以\xc2\xb4t执行以下操作:

\n\n
m.AnotherProperty = ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如AnotherProperty在该类型上定义的 \xc2\xb4t 一样。

\n\n

即使声明masdynamic也不会帮助您,因为实际类型 ( MyClass) 并不知道 的任何内容AnotherProperty

\n\n
dynamic a = new MyClass { MyProperty = ... };\na.AnotherProperty = ...;\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,您的问题的简单答案是:不,您可以\xc2\xb4t 在运行时向类添加成员。

\n