public CompareAlgorithm(Expression <Func <T, TKey> > keyAccessor, bool ignoreKey) { _ignoredProperties = new HashSet <string>(); _propertyWrappers = new Dictionary <string, IPropertyWrapper <T> >(StringComparer.Ordinal); _comparerProvider = new DefaultSoftEqualityComparerProvider(); KeyAccessor = keyAccessor.Compile(); if (ignoreKey) { IgnoreProperty(keyAccessor); } }
public static IPropertyWrapper <T> Create <T, TProperty>(Expression <Func <T, TProperty> > propertyExpression, ISoftEqualityComparerProvider comparerProvider) { return(new PropertyWrapper <T, TProperty>(propertyExpression, comparerProvider.Get <TProperty>())); }
public static IPropertyWrapper <T> Create <T>(PropertyInfo propertyInfo, ISoftEqualityComparerProvider comparerProvider = null) { var methodDelegate = GetMethodDelegate <T>(propertyInfo.PropertyType); return(methodDelegate(propertyInfo, comparerProvider ?? new DefaultSoftEqualityComparerProvider())); }
private static IPropertyWrapper <T> CreateFromPropertyInfo <T, TProperty>(PropertyInfo propertyInfo, ISoftEqualityComparerProvider comparerProvider) { var instance = Expression.Parameter(typeof(T), "instance"); var lambdaExpression = Expression.Lambda <Func <T, TProperty> >( Expression.Property(instance, propertyInfo), instance); return(Create(lambdaExpression, comparerProvider)); }
public void SetDefaultComparer(ISoftEqualityComparerProvider comparerProvider) { _comparerProvider = comparerProvider; }
public MatchAlgorithm() { _matchEvaluators = new List <IMatchEvaluator <T> >(); _comparerProvider = new DefaultSoftEqualityComparerProvider(); }