/// <summary> /// Parse an XML or JSON serialization of a FHIR Bundle and construct the appropriate subclass of /// BaseMessage. The new object is checked to ensure it the same or a subtype of the type parameter. /// </summary> /// <typeparam name="T">the expected message type</typeparam> /// <param name="source">the XML or JSON serialization of a FHIR Bundle</param> /// <param name="permissive">if the parser should be permissive when parsing the given string</param> /// <returns>the deserialized message object</returns> /// <exception cref="MessageParseException">thrown when source does not represent the same or a subtype of the type parameter.</exception> public static T Parse <T>(string source, bool permissive = false) where T : BaseMessage { BaseMessage typedMessage = Parse(source, permissive); if (!typeof(T).IsInstanceOfType(typedMessage)) { throw new MessageParseException($"The supplied message was of type {typedMessage.GetType()}, expected {typeof(T)} or a subclass", typedMessage); } return((T)typedMessage); }
/// <summary> /// Construct the appropriate subclass of BaseMessage based on a FHIR Bundle. /// The new object is checked to ensure it the same or a subtype of the type parameter. /// </summary> /// <typeparam name="T">the expected message type</typeparam> /// <param name="bundle">A FHIR Bundle</param> /// <returns>The message object of the appropriate message type</returns> /// <exception cref="MessageParseException">Thrown when source does not represent the same or a subtype of the type parameter.</exception> public static T Parse <T>(Bundle bundle) where T : BaseMessage { BaseMessage typedMessage = Parse(bundle); if (!typeof(T).IsInstanceOfType(typedMessage)) { throw new MessageParseException($"The supplied message was of type {typedMessage.GetType()}, expected {typeof(T)} or a subclass", typedMessage); } return((T)typedMessage); }