我遇到了以下问题:
目前我正在使用 TDD 重构我的项目。有一个已存在的域,我无法更改。
代码示例:
public class Product: IEquatable<Product>
{
public int Id { get; set; }
public string Name { get; set; }
public bool Equals(Product other)
{
if (other == null)
return false;
if (Id == other.Id && Name == other.Name)
return true;
return false;
}
}
[TestClass]
public class ProductTest
{
[TestMethod]
public void Test1()
{
var product1 = new Product {Id = 100, Name = "iPhone"};
var product2 = new Product {Id = 100, Name = "iPhone"};
Assert.IsTrue(product1.Equals(product2));
}
}
我的目标是找到一种快速解决方案来将复杂对象与结构进行比较,而不是实现 IEquatable 因为我无法扩展业务层。我的意思是像 Automapper 这样的东西,但不是为了映射,而是为了比较。请给一些建议。
预先感谢。
使用来自的代码here https://stackoverflow.com/questions/986572/hows-to-quick-check-if-data-transfer-two-objects-have-equal-properties-in-c/986617#986617 and here https://stackoverflow.com/questions/3060382/comparing-2-objects-and-retrive-a-list-of-fields-with-different-values/3060929#3060929:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public static class ProductTest
{
public static void Main()
{
var product1 = new Product { Id = 100, Name = "iPhone" };
var product2 = new Product { Id = 100, Name = "iPhone" };
bool x = PropertyCompare.Equal(product1, product2); // true
var deltas = PropertyComparer<Product>.GetDeltas(product1, product2);
// ^^= an empty list
}
}
改变第二个Name
to "iPhone2"
gives false
以及包含单个条目的列表:"Name"
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)