Streamline primitive's Value, ObjecValue and "original text" #2781
Labels
breaking change
This issue/commit causes a breaking change, and requires a major version upgrade
enhancement
The Primitive POCO's currently have an internal representation that is the same as the type of their
Value
property. They are listed in the IReadOnlyDictionary documentation.POCO's also have an
ObjectValue
property, that should contain their internal representation (so the same as Value), but can also be used to store a verbatim string (from the json or xml) if it could not be parsed into the format required by theValue
(i.e. an integer in Integer that was unparseable in the XML attribute).For some operations on these primitives, the internal representation is not good enough, i.e. FhirDateTime needs to parse the string value in it to do comparisons. Conversely, some of the constructors of FhirDateTime pass in a discrete date time (already parsed), but since it stores a string internally, these are formatted to a string and then thrown away.
The current setup has a few disadvantages:
ObjectValue
will contain, as its type is object and it can both contain a valid Value or text. I often have to refer back to our documentation to figure out what could be in ObjectValue.We should fix these disadvantages, maybe like so:
ToObjectValue()
onPrimitiveType
.Parse()
on the datatype, but this would require the new static interface members (Parse) on a IPrimitiveType or somesuch.Value
property as isThe text was updated successfully, but these errors were encountered: