using NCC.Dependency; using System; using System.Collections.Generic; namespace NCC.Common.Helper { /// /// 比较器辅助类,用于快速创建接口的实例 /// /// /// var comparer1 = Comparison[Person].CreateComparer(p => p.ID); var comparer2 = Comparison[Person].CreateComparer(p => p.Name); var comparer3 = Comparison[Person].CreateComparer(p => p.Birthday.Year) /// /// 要比较的类型 [SuppressSniffer] public static class ComparisonHelper { /// /// 创建指定对比委托的实例 /// public static IComparer CreateComparer(Func keySelector) { return new CommonComparer(keySelector); } /// /// 创建指定对比委托与结果二次比较器的实例 /// public static IComparer CreateComparer(Func keySelector, IComparer comparer) { return new CommonComparer(keySelector, comparer); } private class CommonComparer : IComparer { private readonly IComparer _comparer; private readonly Func _keySelector; public CommonComparer(Func keySelector, IComparer comparer) { _keySelector = keySelector; _comparer = comparer; } public CommonComparer(Func keySelector) : this(keySelector, Comparer.Default) { } public int Compare(T x, T y) { return _comparer.Compare(_keySelector(x), _keySelector(y)); } } } }