将值添加到对象类型c#

时间:2018-01-25 08:30:30

标签: c# object

我有这样的对象:

object rt = new {
    page = 1,
};

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

rt += { code = 5 };

怎么可能?

3 个答案:

答案 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 = ...;

所以对你的问题的简单回答是:不,你不能在运行时向一个类添加成员。

相关问题