Kellerman比较.NET对象:比较具有不同属性名称的不同类型的对象

时间:2015-06-18 16:29:54

标签: c# compare

我比较了两个不同类型的对象,这两个对象的属性名称有所不同。所以例如我有foo.Surname我想与bar.Lastname进行比较。

有没有办法创建一个映射(比如在ComparisonConfig中),这样我可以告诉比较器这两个属性是一回事?

我可以将有问题的属性添加到忽略列表中,然后对该属性进行手动比较,但看起来创建映射会更简洁。

1 个答案:

答案 0 :(得分:2)

排序,我不确定这是否适用于您的要求。如果您的foo和bar类共享一个键,这将起作用:

    var spec0 = new Dictionary<Type, IEnumerable<string>>();
    spec0.Add(typeof(ChildType), new string[] { "ChildKeyName" });
    spec0.Add(typeof(ParentType), new string[] { "ParentKeyName"});

    List<Type> spec1 = new List<Type>();
    spec1.Add(typeof(ParentType));
    spec1.Add(typeof(ChildType));

    CompareLogic.Config.IgnoreCollectionOrder = true;

    CompareLogic.Config.ClassTypesToInclude = spec1;
    CompareLogic.Config.CollectionMatchingSpec = spec0;
    basicComparison.Config.MaxDifferences = int.MaxValue;
    ComparisonResult = basicComparison.Compare(NewObject, OldObject);