static public PropDefRaw GetPropDef(XMLPropModel propModel, XMLPropItemModel pi, bool typeIsSolid = true) { PropDoWhenChanged doWhenPrepped = propModel.PrepareDoWhenChangedField(pi); DRM.PropBag.XMLModel.PropComparerField comparerPrepped = propModel.PrepareComparerField(pi.ComparerField); PropCreateMethodEnum creationStyle; string initVal = null; if (pi.StorageStrategy == PropStorageStrategyEnum.Internal) { DRM.PropBag.XMLModel.PropInitialValueField initialValPrepped = propModel.PrepareInitialField(pi); if (!initialValPrepped.SetToUndefined) { if (initialValPrepped.SetToDefault) // (pi.InitalValueField.SetToDefault) { // Use default value for "we provide storage" implementation. creationStyle = PropCreateMethodEnum.useDefault; } else { // Use the value indicated for "we provide storage" implentation. creationStyle = PropCreateMethodEnum.value; initVal = pi.InitialValueField.InitialValue; } } else { // No value for "we provide storage" implementation: value will be undefined. creationStyle = PropCreateMethodEnum.noValue; } } else { // No value, for no store implementation. creationStyle = PropCreateMethodEnum.noValue; } return(new PropDefRaw(creationStyle, pi.StorageStrategy, typeIsSolid, comparerPrepped.UseRefEquality, pi.Type, pi.Name, doWhenPrepped.DoWhenChanged, doWhenPrepped.DoAfterNotify, comparerPrepped.Comparer, pi.ExtraInfo, initVal)); }
static public string GetSubscribeMethodCallText(XMLPropModel propModel, XMLPropItemModel pi) { PropDoWhenChanged doWhenPrepped = propModel.PrepareDoWhenChangedField(pi); //SubscribeToPropChanged<string>(GetDelegate<string>("DoWhenStringChanged"), "PropString"); //string result = $"SubscribeToPropChanged<{pi.Type}>(GetDelegate<{pi.Type}>(\"{doWhenPrepped.DoWhenChanged}\"), \"{pi.Name}\")"; string result; if (doWhenPrepped.DoWhenChanged != "null") { result = $"SubscribeToPropChanged<{pi.Type}>({doWhenPrepped.DoWhenChanged}, \"{pi.Name}\");"; } else { result = string.Empty; } return(result); }
static public string GetAddPropMethodCallText(XMLPropModel propModel, XMLPropItemModel pi) { PropDoWhenChanged doWhenPrepped = propModel.PrepareDoWhenChangedField(pi); DRM.PropBag.XMLModel.PropComparerField comparerPrepped = propModel.PrepareComparerField(pi.ComparerField); // Prepare the AddProp method call string formatString; object[] vals = new object[] { comparerPrepped.UseRefEquality ? "ObjComp" : null, null, // will eventually be null, "NoValue" or "NoStore" pi.Type, pi.Name, comparerPrepped.Comparer, "null", "null", // Extra Info -- if we ever use it. null // Initial Value }; if (pi.StorageStrategy == PropStorageStrategyEnum.Internal) { DRM.PropBag.XMLModel.PropInitialValueField initialValPrepped = propModel.PrepareInitialField(pi); if (!initialValPrepped.SetToUndefined) { // AddProp or AddPropObjComp // public IProp<T> AddProp<T>(string propertyName, // Func<T,T,bool> comparer = null, // object extraInfo = null, // T initalValue = default(T)) if (initialValPrepped.SetToDefault) // (pi.InitalValueField.SetToDefault) { if (comparerPrepped.UseRefEquality || comparerPrepped.Comparer == null) { formatString = "AddProp{0}{1}<{2}>(\"{3}\")"; } else { formatString = "AddProp{0}{1}<{2}>(\"{3}\", comparer:{4})"; } } else { vals[6] = PropModelExtensions.GetStringRepForValue(initialValPrepped.InitialValue, pi.Type); if (comparerPrepped.UseRefEquality) { formatString = "AddProp{0}{1}<{2}>(\"{3}\", {4}, initialValue: {5})"; } else { formatString = "AddProp{0}{1}<{2}>(\"{3}\", {4}, {5}, initialValue:{6})"; } } } else { //AddPropNoValue or AddPropObjCompNoValue // public IProp<T> AddProp<T>(string propertyName, // Action<T, T> doIfChanged = null, // bool doAfterNotify = false, // Func<T,T,bool> comparer = null, // object extraInfo = null, vals[1] = "NoValue"; if (comparerPrepped.UseRefEquality || comparerPrepped.Comparer == null) { formatString = "AddProp{0}{1}<{2}>(\"{3}\")"; } else { formatString = "AddProp{0}{1}<{2}>(\"{3}\", comparer:{4})"; } } } else { // AddPropNoStore or AddPropNoStoreObjComp // public void AddPropNoStore<T>(string propertyName, // Action<T, T> doIfChanged, // bool doAfterNotify = false, // Func<T,T,bool> comparer = null) vals[1] = "NoStore"; if (comparerPrepped.UseRefEquality || comparerPrepped.Comparer == null) { formatString = "AddProp{0}{1}<{2}>(\"{3}\")"; } else { formatString = "AddProp{0}{1}<{2}>(\"{3}\", comparer:{4})"; } } return(string.Format(formatString, vals)); }