private void WriteComponent(XPathResult result, object value, IDictionaryAdapter dictionaryAdapter) { if (result.Property != null) { dictionaryAdapter.This.ExtendedProperties.Remove(result.Property.PropertyName); } if (value == null) { result.Remove(); return; } var source = value as IDictionaryAdapter; if (source != null) { var node = result.RemoveChildren(); if (result.Type != source.Meta.Type && result.OmitPolymorphism == false) { var xmlType = source.GetXmlMeta().XmlType; Context.SetXmlType(xmlType.TypeName, xmlType.Namespace, node); } var element = (IDictionaryAdapter)ReadComponent(result, false, dictionaryAdapter); source.CopyTo(element); } }
private void WriteComponent(XPathResult result, ref object value, IDictionaryAdapter dictionaryAdapter) { var source = value as IDictionaryAdapter; if (source != null) { var sourceAdapter = For(source); if (sourceAdapter != null) { var sourceRoot = sourceAdapter.Root; var resultNode = result.GetNavigator(false); if (sourceRoot != null && resultNode != null && sourceRoot.IsSamePosition(resultNode)) { return; } } var node = result.RemoveChildren(); if (result.Type != source.Meta.Type && result.OmitPolymorphism == false) { var xmlType = source.GetXmlMeta().XmlType; var context = GetEffectiveContext(dictionaryAdapter); context.SetXmlType(xmlType.TypeName, xmlType.Namespace, node); } var element = (IDictionaryAdapter)ReadComponent(result, false, dictionaryAdapter); source.CopyTo(element); value = element; } }
private void WriteComponent(XPathResult result, ref object value, IDictionaryAdapter dictionaryAdapter) { var source = value as IDictionaryAdapter; if (source != null) { var node = result.RemoveChildren(); if (result.Type != source.Meta.Type && result.OmitPolymorphism == false) { var xmlType = source.GetXmlMeta().XmlType; Context.SetXmlType(xmlType.TypeName, xmlType.Namespace, node); } var element = (IDictionaryAdapter)ReadComponent(result, false, dictionaryAdapter); source.CopyTo(element); value = element; } }