我们如何动态地向已经具有某些属性的现有类添加属性。
假设我有返回类型IList
的方法Employee类有3个属性,但在某些情况下,通过方法返回Employee类中不存在的额外属性,并且每次调用时此动态属性都可能会更改。
因此,基于结果,我们必须使用C#
动态地添加属性以区别于现有属性答案 0 :(得分:1)
我使用以下命令在ExpandoObject中创建对象的浅表副本,以便我可以分配额外的属性。这可能适合你。
private dynamic ConvertToExpandoObject<T>(T value)
{
var result = new ExpandoObject();
var valueType = typeof(T);
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(valueType))
{
result[property.Name] = property.GetValue(value);
}
return result as ExpandoObject;
}
示例:
Employee e = db.GetEmployee(1);
dynamic expandableEmployee = ConvertToExpandoObject(e);
expandableEmployee.ExpectedYearsOfService = 10*1000;
请注意,此字段不会添加到原始对象中。
答案 1 :(得分:-3)
使用dynamic
dynamic d = yourExistingObject;
d.newProperty = "string for example";