private void write(PropertyMapping prop, object instance, bool summary, ComplexTypeWriter.SerializationMode mode) { // If this is a primitive type, no classmappings and reflection is involved, // just serialize the primitive to the writer if (prop.IsPrimitive) { var writer = new PrimitiveValueWriter(_current); writer.Serialize(instance, prop.SerializationHint); return; } // A Choice property that contains a choice of any resource // (as used in Resource.contained) if (prop.Choice == ChoiceType.ResourceChoice) { var writer = new ResourceWriter(_current); writer.Serialize(instance, summary, contained: true); return; } ClassMapping mapping = _inspector.ImportType(instance.GetType()); if (mode == ComplexTypeWriter.SerializationMode.AllMembers || mode == ComplexTypeWriter.SerializationMode.NonValueElements) { var cplxWriter = new ComplexTypeWriter(_current); cplxWriter.Serialize(mapping, instance, summary, mode); } else { object value = mapping.PrimitiveValueProperty.GetValue(instance); write(mapping.PrimitiveValueProperty, value, summary, ComplexTypeWriter.SerializationMode.AllMembers); } }
private void write(PropertyMapping prop, object instance, Rest.SummaryType summary, ComplexTypeWriter.SerializationMode mode) { // If this is a primitive type, no classmappings and reflection is involved, // just serialize the primitive to the writer if (prop.IsPrimitive) { var writer = new PrimitiveValueWriter(_writer); writer.Serialize(instance, prop.SerializationHint); return; } // A Choice property that contains a choice of any resource // (as used in Resource.contained) if (prop.Choice == ChoiceType.ResourceChoice) { var writer = new ResourceWriter(_writer); writer.Serialize(instance, summary, contained: true); return; } ClassMapping mapping = _inspector.ImportType(instance.GetType()); var st = summary; if (prop.IsMandatoryElement && st == Rest.SummaryType.Text && mapping.HasPrimitiveValueMember) { st = Rest.SummaryType.False; } if (mode == ComplexTypeWriter.SerializationMode.AllMembers || mode == ComplexTypeWriter.SerializationMode.NonValueElements) { var cplxWriter = new ComplexTypeWriter(_writer); cplxWriter.Serialize(mapping, instance, st, mode); } else { object value = mapping.PrimitiveValueProperty.GetValue(instance); write(mapping.PrimitiveValueProperty, value, st, ComplexTypeWriter.SerializationMode.AllMembers); } }
private static JObject getContentsAsJObject(Resource resource, bool summary) { JsonDomFhirWriter writer = new JsonDomFhirWriter(); ResourceWriter w = new ResourceWriter(writer); w.Serialize(resource, summary); return writer.Result; }