Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }