c#-4.0 – 如何使用动态扩展c#4.0中的现有对象

前端之家收集整理的这篇文章主要介绍了c#-4.0 – 如何使用动态扩展c#4.0中的现有对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在c#中有类似于 javascript的prototype属性.
这个想法是在javascript中扩展一个类的实例.
我发现最接近的是使用ExpandoObject,但是您无法使用现有对象初始化它.另一个问题是您可以从ExpandoObject获取原始对象.

这是我想做的

@H_301_6@var originalObject = new Person(); originalObject.name = "Will"; var extendedObject = new ExpandoObject(); extendedObject.lastName = "Smith"; //do something originalObject = (Person) extendedObject;

解决方法

您可以使用以下方法部分解决问题: @H_301_6@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

猜你在找的C#相关文章