private IInterceptor[] GetNotifyChangeInterceptors( ProxiesOptionsExtension options, IEntityType entityType, LazyLoadingInterceptor lazyLoadingInterceptor = null) { var interceptors = new List <IInterceptor>(); if (lazyLoadingInterceptor != null) { interceptors.Add(lazyLoadingInterceptor); } if (options.UseChangeTrackingProxies) { if (!_notifyPropertyChangedInterface.IsAssignableFrom(entityType.ClrType)) { interceptors.Add(new PropertyChangedInterceptor(entityType, options.CheckEquality)); } if (!_notifyPropertyChangingInterface.IsAssignableFrom(entityType.ClrType)) { interceptors.Add(new PropertyChangingInterceptor(entityType, options.CheckEquality)); } } return(interceptors.ToArray()); }
private Castle.DynamicProxy.IInterceptor[] GetNotifyChangeInterceptors( ProxiesOptionsExtension options, IEntityType entityType, LazyLoadingInterceptor lazyLoadingInterceptor = null) { var interceptors = new List <Castle.DynamicProxy.IInterceptor>(); if (lazyLoadingInterceptor != null) { interceptors.Add(lazyLoadingInterceptor); } if (options.UseChangeDetectionProxies) { var changeTrackingStrategy = entityType.GetChangeTrackingStrategy(); switch (changeTrackingStrategy) { case ChangeTrackingStrategy.ChangedNotifications: if (!_notifyPropertyChangedInterface.IsAssignableFrom(entityType.ClrType)) { interceptors.Add(new PropertyChangedInterceptor(entityType, options.CheckEquality)); } break; case ChangeTrackingStrategy.ChangingAndChangedNotifications: case ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues: if (!_notifyPropertyChangedInterface.IsAssignableFrom(entityType.ClrType)) { interceptors.Add(new PropertyChangedInterceptor(entityType, options.CheckEquality)); } if (!_notifyPropertyChangingInterface.IsAssignableFrom(entityType.ClrType)) { interceptors.Add(new PropertyChangingInterceptor(entityType, options.CheckEquality)); } break; default: break; } } return(interceptors.ToArray()); }