Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }