将基类中的数据合并到派生类中
本文关键字:派生 合并 数据 基类 | 更新日期: 2023-09-27 18:01:15
我有一个这样的类结构:
space -> ServiceRequestSystemX
我写了一个方法来返回ServiceRequestSystemX的列表。数据与存储空间信息的位置分开保存。因此,每次创建ServiceRequestSystemX类型的新对象时,我都会调用不同的接口来返回该服务请求的空间对象。
现在,因为ServiceRequestSystemX最终派生自空间,是否有一种快速的方法,我可以合并我的空间对象到我的ServiceRequestSystemX对象,而不需要做:
ServiceRequestSystemX.X_Coordinate = Spatial.X_Coordinate;
作为一个派生类型,ServiceRequestSystemX已经公开了由Spatial类公开的基成员。
根据您在我的第一个答案中的评论,您可以尝试使用反射将两个对象合并在一起。但我认为这是一个肮脏的黑客。
public static class ExtensionMethods
{
public static TEntity CopyTo<TEntity>(this TEntity OriginalEntity, TEntity NewEntity)
{
PropertyInfo[] oProperties = OriginalEntity.GetType().GetProperties();
foreach (PropertyInfo CurrentProperty in oProperties.Where(p => p.CanWrite))
{
if (CurrentProperty.GetValue(NewEntity, null) != null)
{
CurrentProperty.SetValue(OriginalEntity, CurrentProperty.GetValue(NewEntity, null), null);
}
}
return OriginalEntity;
}
}
这段代码摘自另一篇文章