/// <summary>
        /// Constructor for Store-Box based properties.
        /// </summary>
        public ModelPropertyDefinitor(string TechName, EEntityMembership Membership, bool?ReferencesOwner, EPropertyKind Kind,
                                      Func <TModelClass, StoreBox <TValue> > StoreBoxGetter,
                                      Action <TModelClass, StoreBox <TValue> > StoreBoxSetter,
                                      bool IsDirectlyEditable = true, bool IsAdvanced = false, string Name = "", string Summary = "",
                                      TValue InitialValue     = default(TValue),
                                      Func <TValue, Tuple <bool, string> > Validator = null,
                                      bool IsRequired = false)
            : this(TechName, Membership, ReferencesOwner, Kind,
                   (ins) =>
        {
            var Store = StoreBoxGetter(ins);
            if (Store == null)
            {
                return(default(TValue));
            }

            return(Store.Value);
        },
                   (ins, val) =>
        {
            var Store = StoreBoxGetter(ins);
            if (Store == null)
            {
                return;
            }

            Store.Value = val;
        },
                   IsDirectlyEditable, IsAdvanced, Name, Summary, InitialValue, Validator, IsRequired)
        {
            this.StoreBoxGetter = StoreBoxGetter;
            this.StoreBoxSetter = StoreBoxSetter;
        }
        /// <summary>
        /// Constructor for standard properties.
        /// </summary>
        public ModelPropertyDefinitor(string TechName, EEntityMembership Membership, bool?ReferencesOwner, EPropertyKind Kind,
                                      Func <TModelClass, TValue> BaseGetter,
                                      Action <TModelClass, TValue> BaseSetter,
                                      bool IsDirectlyEditable = true, bool IsAdvanced = false, string Name = "", string Summary = "", TValue InitialValue = default(TValue),
                                      Func <TValue, Tuple <bool, string> > Validator = null,
                                      bool IsRequired = false)
            : base(TechName, Name, Summary, typeof(TValue), Membership, ReferencesOwner, Kind, IsDirectlyEditable, IsAdvanced, IsRequired)
        {
            // Dummy properties has no setters.
            if (BaseGetter == null || BaseSetter == null)
            {
                return;
            }

            this.Getter = BaseGetter;
            this.Setter = ((ins, def, val) => { BaseSetter(ins, val); return(true); });

            // sole post-interceptor
            AlterSetterForPostInterception("NotifyChanges", SetterPostInterceptor_NotifyChanges);

            // second pre-interceptor
            if (IsEditControlled)
            {
                AlterSetterForPreInterception("SavePreviousValue", EntityEditEngine.PropertySetterPreInterceptor);
            }

            /*T else
             *      Console.WriteLine("No undoable/redoable: Class=[{0}], Property=[{1}]", typeof(TModelClass).Name, TechName); */

            // first pre-interceptor
            AlterSetterForPreInterception("IgnoreUnchanged", SetterPreInterceptor_IgnoreUnchanged);

            this.InitialValue = InitialValue;
            this.Validator    = Validator;
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 public ModelDictionaryDefinitor(string TechName, EEntityMembership Membership,
                                 Func <TModelClass, EditableDictionary <TKey, TValue> > BaseGetter,
                                 Action <TModelClass, EditableDictionary <TKey, TValue> > BaseSetter,
                                 string Name, string Summary, bool IsRequired = false, bool IsEditControlled = true, bool IsAdvanced = false)
     : base(TechName, Name, Summary, typeof(TModelClass), Membership, IsRequired, IsAdvanced)
 {
     this.Getter = BaseGetter;
     this.Setter = ((ins, def, coll) => { BaseSetter(ins, coll); return(true); });
 }
Example #4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public MModelCollectionDefinitor(string TechName, string Name, string Summary, Type DeclaringType, EEntityMembership Membership, bool IsRequired, bool IsAdvanced)
     : base(TechName, Name, Summary, DeclaringType, Membership, IsRequired, IsAdvanced)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public MModelPropertyDefinitor(string TechName, string Name, string Summary, Type DeclaringType, EEntityMembership Membership,
                                bool?ReferencesOwner, EPropertyKind Kind, bool IsDirectlyEditable, bool IsAdvanced, bool IsRequired)
     : base(TechName, Name, Summary, DeclaringType, Membership, IsRequired, IsAdvanced)
 {
     this.ReferencesOwner    = ReferencesOwner;
     this.Kind               = Kind;
     this.IsDirectlyEditable = IsDirectlyEditable;
 }
        public MModelMemberDefinitor(string TechName, string Name, string Summary, Type DeclaringType, EEntityMembership Membership, bool IsRequired, bool IsAdvanced)
            : base(TechName, Name, Summary, DeclaringType)
        {
            this.Membership = Membership;
            this.IsRequired = IsRequired;
            this.IsAdvanced = IsAdvanced;

            this.IsEditControlled       = true;
            this.ChangesExistenceStatus = true;
        }