【发布时间】:2014-07-06 07:59:26
【问题描述】:
我有以下类,我有两个对象,Obj1 一个有以前的数据,obj2 有一些可以更改的字段的数据(我正在编辑,在更改之前有 obj1,之后有 obj2) .我的问题是,如果我有两个对象,那么将对象(如键 val 列表)仅放入已更改的字段和它们的值的最佳方法是什么。 我在 SO 中读到了它,我发现了这两种方法,但有些帖子很旧......, 什么是正确/有效的方法?示例将非常有帮助。
Get the changed properties in same object
public class UserData
{
public int Id { get; set; }
public string UserName { get; set; }
public string Address { get; set; }
public string Email { get; set; }
public string Work { get; set; }
public string Home { get; set; }
}
public class Program
{
public static void Main()
{
UserData obj1 = new UserData();
obj1.Email = "www.test.com";
obj1.Home = "test home";
UserData obj2 = new UserData();
obj2.Email = "www.test2.com";
obj2.Home = "test home2";
}
}
我已经从这篇文章中尝试过以下内容,但我得到了错误,知道吗? Compare two objects and find the differences
changedList = obj1.DetailedCompare(obj2);
我遇到了这个错误,知道如何解决它:
方法的类型参数
'Web.Controllers.extentions.DetailedCompare<T>(T, T)'不能 从用法推断。尝试明确指定类型参数
【问题讨论】:
-
@PatrickHofman-不确定我明白了...
-
obj1-email = "www.test.com";是什么意思? -
@KonradKokosa-这只是从上一个更改的对象属性的示例...修复我的帖子并将第二个更改为 obj2...
-
@PatrickHofman- 不编译是什么意思?在我的示例中有 6 个属性,其中只有两个(家庭、电子邮件)发生了变化,我想得到它们,如何?我尝试使用底部的示例而没有任何想法?
-
表示您访问
properties的方式在语法上不正确。正确的方法是使用.而不是-。喜欢:obj2.email不是obj2-email