/// <summary>
 /// Инициализирует экземпляр
 /// </summary>
 /// <param name="propertyProvider">Используется для получения свойств сущностей, участвующих в сравнении</param>
 /// <param name="equalityComparers">Опциональные пользовательские IEqualityComparer<T> для нестандартного поведения при сравнения полей сущностей</param>
 public EqualityComparerFactory(IObjectPropertyProvider propertyProvider, params object[] equalityComparers)
 {
     _propertyProvider      = propertyProvider;
     _equalityComparers     = CreateComparersDictionary(equalityComparers ?? Array.Empty <object>());
     _identityComparerCache = new Dictionary <Type, object>();
     _completeComparerCache = new Dictionary <Type, object>();
 }
 public EqualityComparerFactory(IObjectPropertyProvider propertyProvider)
 {
     _propertyProvider      = propertyProvider;
     _identityComparerCache = new Dictionary <Type, object>();
     _completeComparerCache = new Dictionary <Type, object>();
 }
 public EqualityComparerFactory(IObjectPropertyProvider propertyProvider)
     : this(propertyProvider, null)
 {
 }