Exemple #1
0
 /// <summary>
 ///     Register the methods
 /// </summary>
 /// <param name="interceptor"></param>
 public override void Initialize(IExtensibleInterceptor interceptor)
 {
     base.Initialize(interceptor);
     // this registers one method and the overloading is handled in the GetDefaultValue
     interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IDefaultValue>(x => x.DefaultValueFor("")), GetDefaultValue);
     interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IDefaultValue>(x => x.RestoreToDefault("")), RestoreToDefault);
 }
Exemple #2
0
        /// <summary>
        ///     Register methods
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            // this registers one method and the overloading is handled in the GetDescription
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IDescription>(x => x.DescriptionFor("")), GetDescription);
        }
Exemple #3
0
        /// <summary>
        ///     Method to restore a property to its default
        /// </summary>
        /// <param name="interceptor">IExtensibleInterceptor responsible for the object</param>
        /// <param name="propertyInfo"></param>
        /// <param name="exception">out value to get an exception</param>
        private void RestoreToDefault(IExtensibleInterceptor interceptor, PropertyInfo propertyInfo, out Exception exception)
        {
            object defaultValue = null;

            exception = null;
            try
            {
                defaultValue = GetConvertedDefaultValue(propertyInfo);
            }
            catch (Exception ex)
            {
                _log.Warn().WriteLine(ex.Message);
                // Store the exception so it can be used
                exception = ex;
            }

            if (defaultValue != null)
            {
                interceptor.Set(propertyInfo.Name, defaultValue);
                return;
            }
            try
            {
                defaultValue = propertyInfo.PropertyType.CreateInstance();
                interceptor.Set(propertyInfo.Name, defaultValue);
            }
            catch (Exception ex)
            {
                // Ignore creating the default type, this might happen if there is no default constructor.
                _log.Warn().WriteLine(ex.Message);
            }
        }
Exemple #4
0
        /// <summary>
        ///     Register methods
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            // Use Lambda to make refactoring possible, this registers one method and the overloading is handled in the IsTaggedWith
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITagging>(x => x.IsTaggedWith("", null)), IsTaggedWith);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITagging>(x => x.GetTagValue("", null)), GetTagValue);
        }
Exemple #5
0
 /// <summary>
 ///     Process the property, in our case set the default
 /// </summary>
 /// <param name="interceptor"></param>
 /// <param name="propertyInfo"></param>
 public override void InitProperty(IExtensibleInterceptor interceptor, PropertyInfo propertyInfo)
 {
     RestoreToDefault(interceptor, propertyInfo, out var ex);
     if (ex != null)
     {
         throw ex;
     }
 }
Exemple #6
0
        /// <summary>
        /// Register setter and methods
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            interceptor.RegisterSetter((int)CallOrder.Last, HasChangesSetter);

            // Use Lambdas to make refactoring possible
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IHasChanges>(x => x.ResetHasChanges()), ResetHasChanges);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IHasChanges>(x => x.HasChanges()), HasChanges);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IHasChanges>(x => x.IsChanged("")), IsChanged);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IHasChanges>(x => x.Changes()), Changes);
        }
Exemple #7
0
        /// <summary>
        ///     Register methods and getter/setter
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            interceptor.RegisterSetter((int)CallOrder.First, TransactionalSetter);
            interceptor.RegisterGetter((int)CallOrder.First, TransactionalGetter);

            // Use Lambdas to make refactoring possible
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITransactionalProperties>(x => x.StartTransaction()), StartTransaction);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITransactionalProperties>(x => x.CommitTransaction()), CommitTransaction);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITransactionalProperties>(x => x.RollbackTransaction()), RollbackTransaction);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <ITransactionalProperties>(x => x.IsTransactionDirty()), IsTransactionDirty);
        }
Exemple #8
0
        /// <summary>
        ///     Register methods and setter
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            // Map the default add / remove handler methods
            interceptor.RegisterMethod($"add_{nameof(PropertyChanged)}", AddPropertyChanged);
            interceptor.RegisterMethod($"remove_{nameof(PropertyChanged)}", RemovePropertyChanged);

            // This is not default, but used by EventOberservable (Dapplo.Utils)
            interceptor.RegisterMethod($"invoke_{nameof(PropertyChanged)}", InvokePropertyChanged);
            // Register the NotifyPropertyChangedSetter as a last setter, it will call the NPC event
            interceptor.RegisterSetter((int)CallOrder.Last, NotifyPropertyChangedSetter);
        }
Exemple #9
0
        /// <summary>
        ///     Register setter and methods
        /// </summary>
        /// <param name="interceptor"></param>
        public override void Initialize(IExtensibleInterceptor interceptor)
        {
            base.Initialize(interceptor);

            interceptor.RegisterSetter((int)CallOrder.First, WriteProtectSetter);

            // Use Lambdas to make refactoring possible
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.StartWriteProtecting()), StartWriteProtecting);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.RemoveWriteProtection()), RemoveWriteProtection);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.StopWriteProtecting()), StopWriteProtecting);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.WriteProtect("")), WriteProtect);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.DisableWriteProtect("")), DisableWriteProtect);
            interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IWriteProtectProperties>(x => x.IsWriteProtected("")), IsWriteProtected);
        }
Exemple #10
0
        /// <summary>
        ///     Process the property, in our case get the tags
        /// </summary>
        /// <param name="interceptor"></param>
        /// <param name="propertyInfo"></param>
        public override void InitProperty(IExtensibleInterceptor interceptor, PropertyInfo propertyInfo)
        {
            var customAttributes = Attribute.GetCustomAttributes(propertyInfo);

            foreach (var customAttribute in customAttributes)
            {
                if (!(customAttribute is TagAttribute tagAttribute))
                {
                    continue;
                }

                if (!_taggedProperties.TryGetValue(propertyInfo.Name, out var tags))
                {
                    tags = new Dictionary <object, object>();
                    _taggedProperties.Add(propertyInfo.Name, tags);
                }
                tags[tagAttribute.Tag] = tagAttribute.TagValue;
            }
        }
Exemple #11
0
 /// <summary>
 ///     Register setter and methods
 /// </summary>
 /// <param name="interceptor"></param>
 public override void Initialize(IExtensibleInterceptor interceptor)
 {
     base.Initialize(interceptor);
     // Use Lambdas to make refactoring possible
     interceptor.RegisterMethod(ExpressionExtensions.GetMemberName <IShallowCloneable <T> >(x => x.ShallowClone()), Clone);
 }
Exemple #12
0
 /// <summary>
 ///     After property initialization
 /// </summary>
 /// <param name="interceptor"></param>
 public virtual void AfterInitialization(IExtensibleInterceptor interceptor)
 {
 }
Exemple #13
0
 /// <summary>
 ///     Handle every property
 /// </summary>
 /// <param name="interceptor"></param>
 /// <param name="propertyInfo"></param>
 public virtual void InitProperty(IExtensibleInterceptor interceptor, PropertyInfo propertyInfo)
 {
 }
Exemple #14
0
 /// <summary>
 ///     Initialize the extension, e.g. register methods etc.
 /// </summary>
 /// <param name="interceptor"></param>
 public virtual void Initialize(IExtensibleInterceptor interceptor)
 {
 }