コード例 #1
0
ファイル: CompareAlgorithm.cs プロジェクト: gragonvlad/Merger
        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);
            }
        }
コード例 #2
0
 public static IPropertyWrapper <T> Create <T, TProperty>(Expression <Func <T, TProperty> > propertyExpression, ISoftEqualityComparerProvider comparerProvider)
 {
     return(new PropertyWrapper <T, TProperty>(propertyExpression, comparerProvider.Get <TProperty>()));
 }
コード例 #3
0
        public static IPropertyWrapper <T> Create <T>(PropertyInfo propertyInfo, ISoftEqualityComparerProvider comparerProvider = null)
        {
            var methodDelegate = GetMethodDelegate <T>(propertyInfo.PropertyType);

            return(methodDelegate(propertyInfo, comparerProvider ?? new DefaultSoftEqualityComparerProvider()));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: CompareAlgorithm.cs プロジェクト: gragonvlad/Merger
 public void SetDefaultComparer(ISoftEqualityComparerProvider comparerProvider)
 {
     _comparerProvider = comparerProvider;
 }
コード例 #6
0
ファイル: MatchAlgorithm.cs プロジェクト: gragonvlad/Merger
 public MatchAlgorithm()
 {
     _matchEvaluators  = new List <IMatchEvaluator <T> >();
     _comparerProvider = new DefaultSoftEqualityComparerProvider();
 }