我有这样的类结构:
空间 - > ServiceRequest - > ServiceRequestSystemX
我编写了一个返回ServiceRequestSystemX列表的方法。数据分别保存到存储空间信息的位置。因此,每次我创建一个ServiceRequestSystemX类型的新对象时,我都会调用另一个接口来返回该服务请求的Spatial对象。
现在因为ServiceRequestSystemX最终是从Spatial派生的,所以我可以通过一种快速的方式将我的Spatial对象合并到我的ServiceRequestSystemX对象中,而无需这样做:
ServiceRequestSystemX.X_Coordinate = Spatial.X_Coordinate;
我发现这是乏味且不必要的。
答案 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。