protected override void synchronizeRemove(DomainObject objValue) { Debug.Assert(objValue != null); // синхронизируем обратное свойство DomainPropCollection propRev = (DomainPropCollection)getReverseProp(objValue); if (propRev != null) { propRev.internal_AddPendingAction(DomainPropPendingActionMode.Remove, m_objParent); } }
protected virtual DomainPropBase createPropInstace(DomainObject obj, XPropInfoBase xpropInfo) { DomainPropBase prop; switch (xpropInfo.VarType) { case XPropType.vt_object: if (xpropInfo is XPropInfoObjectScalar) { prop = new DomainPropObjectScalar(obj, (XPropInfoObject)xpropInfo); } else if (xpropInfo is XPropInfoObjectArray) { prop = new DomainPropCollection(obj, (XPropInfoObjectArray)xpropInfo); } else if (xpropInfo is XPropInfoObjectLink) { prop = new DomainPropLink(obj, (XPropInfoObjectLink)xpropInfo); } else { throw new ApplicationException(); } break; case XPropType.vt_text: prop = new DomainPropText(obj, xpropInfo); break; case XPropType.vt_bin: prop = new DomainPropBinary(obj, xpropInfo); break; case XPropType.vt_boolean: prop = new DomainPropBoolean(obj, (XPropInfoBoolean)xpropInfo); break; case XPropType.vt_string: prop = new DomainPropString(obj, (XPropInfoString)xpropInfo); break; case XPropType.vt_uuid: prop = new DomainPropUUID(obj, (XPropInfoSimple)xpropInfo); break; case XPropType.vt_smallBin: prop = new DomainPropSmallBin(obj, (XPropInfoSmallBin)xpropInfo); break; case XPropType.vt_r4: prop = new DomainPropNumericSingle(obj, (XPropInfoNumeric)xpropInfo); break; case XPropType.vt_r8: prop = new DomainPropNumericDouble(obj, (XPropInfoNumeric)xpropInfo); break; case XPropType.vt_fixed: prop = new DomainPropNumericDecimal(obj, (XPropInfoNumeric)xpropInfo); break; default: if (xpropInfo is XPropInfoNumeric) { prop = new DomainPropNumericInt(obj, (XPropInfoNumeric)xpropInfo); } else if (xpropInfo is XPropInfoDatetime) { prop = new DomainPropDateTime(obj, (XPropInfoDatetime)xpropInfo); } else { throw new ApplicationException(); } break; } return(prop); }