我想在c#中有类似于
javascript的prototype属性.
这个想法是在javascript中扩展一个类的实例.
我发现最接近的是使用ExpandoObject,但是您无法使用现有对象初始化它.另一个问题是您可以从ExpandoObject获取原始对象.
这个想法是在javascript中扩展一个类的实例.
我发现最接近的是使用ExpandoObject,但是您无法使用现有对象初始化它.另一个问题是您可以从ExpandoObject获取原始对象.
这是我想做的
var originalObject = new Person(); originalObject.name = "Will"; var extendedobject = new ExpandoObject(); extendedobject.lastName = "Smith"; //do something originalObject = (Person) extendedobject;
解决方法
您可以使用以下方法部分解决问题:
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
原文地址:https://www.jb51.cc/csharp/95029.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。