C# - 将值附加到新对象

时间:2018-01-30 11:16:22

标签: c# object

我想知道在C#中是否存在向这样创建的对象添加值的方法:

object myObject = new { a = "First", b = "Second" };

我可以添加一个新字段,例如' c'到myObject(在我的意思是声明行之后)? 我在doc上搜索过,但是我找不到任何可以做到的事情。

所以,我的问题是:

  1. 有可能吗?
  2. 我该怎么做?
  3. 非常感谢你的帮助!

    祝你好运, 安德烈

1 个答案:

答案 0 :(得分:0)

了解此语法的含义非常重要。首先,new { a = "First", b = "Second" }使用您指定的特定属性创建匿名类型的实例。这已经回答了你的问题 - 如果一个对象是以这个方式创建的,你不能“扩展”它。此外,对object的投射也几乎无用,因为您失去了对属性的访问权限(对var使用object而不是new { ... },这会将类型推断为实际的匿名您创建的类型。)

至于如何使用新属性动态扩展对象的一般问题,答案很简单 - 使用ExpandoObject

dynamic myObject = new ExpandoObject();
myObject.a = "First";
myObject.b = "Second";
myObject.anything = 42;
//etc.

如果将实例视为dynamic,则将每个属性set / get视为动态调用,并在运行时完成绑定。 ExpandoObject 允许随时添加任意数量的其他属性。如果要访问所有属性,请将其强制转换为IDictionary<string, object>