예제 #1
0
        protected void applyPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
        {
            Debug.Assert(State == DomainPropLoadableState.Loaded);
            DomainPropPendingAction.Check(action, objValue);
            switch (action)
            {
            case DomainPropPendingActionMode.Add:
                checkAddingObject(objValue);
                m_objects.Add(objValue);
                break;

            case DomainPropPendingActionMode.Remove:
                DomainObject objLocal = FindObjectValue(objValue.ObjectID);
                if (objLocal != null)
                {
                    m_objects.Remove(objLocal);
                }
                break;

            case DomainPropPendingActionMode.Clear:
                m_objects.Clear();
                break;

            default:
                throw new InvalidOperationException("Неподдерживаемое действие");
            }
        }
예제 #2
0
 public void internal_SetPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
 {
     if (m_objParent.IsDeleted)
     {
         return;
     }
     if (m_objParent.IsGhost)
     {
         // объект владелец не загружен - подпишемся на событие и загрузки и сохраним отложенное изменение свойства
         m_objParent.ObjectLoaded += new EventHandler(parentObjectLoadedHandler);
         m_pendingAction           = new DomainPropPendingAction(action, objValue);
     }
     else
     {
         // объект-владелец прогружен - можно не откладывать изменения
         applyPendingAction(action, objValue);
     }
 }