/// <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); }); }
/// <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; }