【发布时间】:2013-08-20 18:12:50
【问题描述】:
假设以下类:
public class MyEntity
{
public string FirstName;
public string LastName;
}
我想比较MyEntity 的两个实例,并创建一个新的MyEntity 实例,其中只包含其他两个实例之间的值差异。相等的属性将在新对象中产生null 值。
例如,我想要以下代码:
MyEntity entity1 = new MyEntity() { FirstName = "Jon", LastName = "Doh" };
MyEntity entity2 = new MyEntity() { FirstName = "Jon", LastName = "The Great" };
MyEntity diffEntity = CreateDiffEntity(entity1, entity2); // TODO
产生以下diffEntity 值:
{
FirstName: null,
LastName: "The Great"
}
我们可以假设所有属性都可以为空。
如果值不匹配,新对象应包含第二个对象的属性值。
请假设我有许多类型的实体,具有不同的属性定义m
所以我需要一个可以在MyEntity以外的其他类类型上使用的解决方案,并且在将新属性添加到类时不需要更改。
最终目标是使客户端移动应用程序能够将仅包含对实体所做更改的 DTO 发送到 ASP.NET MVC WebAPI 服务器应用程序。
如何才能正确地做到这一点?
【问题讨论】:
-
您是否已经尝试过任何事情并被卡住了,或者只是发布了一个问题并认为有人会为您做任何事情? :)
-
如果它们不匹配,diffEntity 将采用第二个实体的值...?
-
听起来是个有趣的问题,您可以在类构造函数中执行此操作,比较
entity1和entity2的值。你有没有尝试过任何东西,或者这只是一个家庭作业问题? -
diffEntity 如果不匹配,将采用第二个实体的值
-
假设您要将属性更改为
null。您的方法似乎不允许这样做。您可能需要重新考虑您的方法。
标签: c# reflection