Pat*_*oco 11 c# dynamic c#-4.0
我希望在c#中有类似javascript的prototype属性.
这个想法是像在javascript中那样扩展类的实例.
我发现最接近的是使用ExpandoObject,但是你无法用现有对象初始化它.
另一个问题是您可以从ExpandoObject中取回原始对象.
这就是我想要做的
var originalObject = new Person();
originalObject.name = "Will";
var extendedObject = new ExpandoObject();
extendedObject.lastName = "Smith";
//do something
originalObject = (Person) extendedObject;
Run Code Online (Sandbox Code Playgroud)
Pat*_*oco 18
您可以使用以下内容部分解决问题:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是您无法将方法复制到新的ExpandoObject
| 归档时间: |
|
| 查看次数: |
5269 次 |
| 最近记录: |