【问题标题】:C# - Append value to new object [duplicate]C# - 将值附加到新对象[重复]
【发布时间】:2018-01-30 11:16:22
【问题描述】:

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

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

我可以在 myObject 中添加一个像“c”这样的新字段吗(我的意思是在声明行之后)? 我在 doc 上进行了搜索,但找不到任何可以执行此操作的内容。

所以,我的问题是:

  1. 有可能吗?
  2. 我该怎么做?

非常感谢您的帮助!

最好的问候, 安德烈亚

【问题讨论】:

标签: c# object


【解决方案1】:

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

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

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

如果您将实例视为dynamic,则每个属性设置/获取都被视为动态调用,并且绑定在运行时完成。 ExpandoObject 允许随时添加任意数量的附加属性。如果要访问所有属性,请将其转换为 IDictionary<string, object>

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 2015-11-01
    • 2012-11-23
    • 2015-11-24
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多