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

时间:2013-02-26 11:37:37

标签: c#

我有这样的类结构:

空间 - > ServiceRequest - > ServiceRequestSystemX

我编写了一个返回ServiceRequestSystemX列表的方法。数据分别保存到存储空间信息的位置。因此,每次我创建一个ServiceRequestSystemX类型的新对象时,我都会调用另一个接口来返回该服务请求的Spatial对象。

现在因为ServiceRequestSystemX最终是从Spatial派生的,所以我可以通过一种快速的方式将我的Spatial对象合并到我的ServiceRequestSystemX对象中,而无需这样做:

ServiceRequestSystemX.X_Coordinate = Spatial.X_Coordinate;

我发现这是乏味且不必要的。

2 个答案:

答案 0 :(得分:4)

作为派生类型,ServiceRequestSystemX已经公开了Spatial类公开的基础成员。

答案 1 :(得分:0)

根据您在第一个回答中的评论,可以尝试使用反射将两个对象合并在一起。但我会称之为肮脏的黑客。

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;
    }
}

此代码取自另一篇帖子here