1

我有一个这样的类结构:

空间 --> 服务请求 --> 服务请求系统X

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

现在因为 ServiceRequestSystemX 最终是从 Spatial 派生的,有没有一种快速的方法可以将我的 Spatial 对象合并到我的 ServiceRequestSystemX 对象中,而无需执行以下操作:

ServiceRequestSystemX.X_Coordinate = Spatial.X_Coordinate;

我觉得这很乏味和不必要。

4

2 回答 2

4

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

于 2013-02-26T11:41:53.107 回答
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;
    }
}

此代码取自此处找到的另一篇文章。

于 2013-02-26T11:56:13.653 回答