public object GetDeserializedObject(object obj, Type targetType) { Surrogates.MultipleEntry entry = obj as Surrogates.MultipleEntry; if (entry != null) { MultipleEntry entryToDeserialize = new MultipleEntry(entry.Name); entryToDeserialize.TypedValue = entry.Entities; return entryToDeserialize; } Surrogates.Command command = obj as Surrogates.Command; if (command != null) { return null; } return obj; }
public override CreateReferenceCommand Visit(CreateReferenceCommand c) { _RWL.AcquireWriterLock(); try { Entity childEntity = GetEntity(c.ChildType, c.ChildId); Entity parentEntity = GetEntity(c.ParentType, c.ParentId); State tmpState = parentEntity.State; if (c.Reference.Cardinality.IsToMany) { MultipleEntry me = (MultipleEntry)parentEntity[c.Role ?? c.Reference.Name]; if (me == null) parentEntity.Add(me = new MultipleEntry(c.Role ?? c.Reference.Name)); me.Add(Entry.Create(c.Role ?? c.Reference.Name, tmpState, childEntity)); } else parentEntity.Add(c.Role ?? c.Reference.Name, childEntity); parentEntity.State = tmpState; } finally { _RWL.ReleaseWriterLock(); } return c; }