【问题标题】:How to extend an existing object in c# 4.0 using dynamics如何使用动态扩展 c# 4.0 中的现有对象
【发布时间】:2012-11-30 18:44:21
【问题描述】:

我想在 c# 中有类似于 javascript 的原型属性的东西。
这个想法是像在 javascript 中那样扩展一个类的实例。
我发现最接近的方法是使用 ExpandoObject,但您无法使用现有对象对其进行初始化。
另一个问题是您可以从 ExpandoObject 取回原始对象。

这是我想做的:

var originalObject = new Person();
originalObject.name = "Will";
var extendedObject = new ExpandoObject();
extendedObject.lastName = "Smith";

//do something

originalObject = (Person) extendedObject;

【问题讨论】:

标签: c# c#-4.0 dynamic


【解决方案1】:

您可以使用以下方法部分解决问题:

public static class DynamicExtensions
{
    public static dynamic ToDynamic(this object value)
    {
        IDictionary<string, object> expando = new ExpandoObject();

        foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType()))
            expando.Add(property.Name, property.GetValue(value));

        return expando as ExpandoObject;
    }
}

但您无法将方法复制到新的 ExpandoObject

【讨论】:

  • 我实际上认为这是我需要向我的类型化 Class 添加 3 个自定义字段,但我不明白如何使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多