将基类中的数据合并到派生类中

本文关键字:派生 合并 数据 基类 | 更新日期: 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;
    }
}

这段代码摘自另一篇文章