我有两个对象列表。在做比较的时候,我怎么能忽略汽车的一些特性呢?我尝试过MembersToIgnore和AttributesToIgnore,但是它似乎没有意识到它,而且它仍然返回那些不同的属性。当我试着比较两辆车时,它工作得很好,当我比较列表时,我怎么能忽略这些属性呢?
List<Car> lst1
List<Car> lst2
CompareLogic compare = new CompareLogic();
ComparisonResult res = compare.Compare(lst1,lst2);发布于 2022-06-25 16:50:51
您需要使用自定义比较器。
例如:
public class SpecialCarComparer: BaseTypeComparer
{
public SpecialCarComparer(RootComparer rootComparer) : base(rootComparer)
{
}
public SpecialCarComparer() : this(RootComparerFactory.GetRootComparer())
{
}
public override bool IsTypeMatch(Type type1, Type type2)
{
return type1 == typeof(Car);
}
public override void CompareType(CompareParms parms)
{
Car car1 = parms.Object1 as Car;
Car car2 = parms.Object2 as Car;
if (car1?.SomeCarProperty != car2?.SomeCarProperty || car1?.AnotherCarProperty > 100 || car2?.AnotherCarProperty < 100)
{
AddDifference(parms);
}
}
}然后用它:
CompareLogic compareLogic = new CompareLogic();
compareLogic.Config.CustomComparers.Add(new SpecialCarComparer());
ComparisonResult result = compareLogic.Compare(obj1, obj2);https://stackoverflow.com/questions/71324384
复制相似问题