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("Неподдерживаемое действие"); } }
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); } }