public static bool CompareCollectionsUsingSpecificLikeness <TSourceCollectionItem, TDestinationCollectionItem, TSourceCollectionItemSubType, TDestinationCollectionItemSubType> ( this IEnumerable <TSourceCollectionItem> sourceCollection, IEnumerable <TDestinationCollectionItem> destCollection, Func <Likeness <TSourceCollectionItemSubType, TDestinationCollectionItemSubType>, Likeness <TSourceCollectionItemSubType, TDestinationCollectionItemSubType> > likenessDefFunc = null ) where TSourceCollectionItemSubType : class, TSourceCollectionItem where TDestinationCollectionItemSubType : class, TDestinationCollectionItem where TSourceCollectionItem : class where TDestinationCollectionItem : class { return(CompareUtils.CompareCollectionsUsingLikeness(likenessDefFunc, sourceCollection, destCollection)); }
public static Likeness <TSource, TDestination> WithCollectionInnerSpecificLikeness <TSource, TDestination, TSourceProperty, TDestinationProperty, TSourcePropertySubType, TDestinationPropertySubType> ( this Likeness <TSource, TDestination> likeness, Expression <Func <TDestination, IEnumerable <TDestinationProperty> > > propertyPicker, Expression <Func <TSource, IEnumerable <TSourceProperty> > > sourcePropertyPicker, Func <Likeness <TSourcePropertySubType, TDestinationPropertySubType>, Likeness <TSourcePropertySubType, TDestinationPropertySubType> > likenessDefFunc = null ) where TSourcePropertySubType : class, TSourceProperty where TDestinationPropertySubType : class, TDestinationProperty where TSourceProperty : class where TDestinationProperty : class { return(likeness.With(propertyPicker) .EqualsWhen((s, d) => { DiagnosticsWriterLocator.DiagnosticsWriter.WriteMessage(String.Format("Comparing inner collections using likeness. Source: {0} Destination: {1}.", sourcePropertyPicker, propertyPicker)); var sourceCollection = ExpressionUtils.GetValue(sourcePropertyPicker, s); var destCollection = ExpressionUtils.GetValue(propertyPicker, d); return CompareUtils.CompareCollectionsUsingLikeness(likenessDefFunc, sourceCollection, destCollection); })); }