Reinventing the wheel T_T
ref = CXuesong/XSerializer/
Pull is welcomed T_T if you’d like to
Recently I’ve been considering the following problems:
When serializing using XmlSerializer
to get more control on what the XML should look like,
- How to serialize members with type
Nullable<T>
, persisting it as XML attribute (rather than element)? - How to serialize references, avoiding it persisted as multiple identical copies of one object?
- How to achieve the these two things above, without introducting public auxiliary properties?
(e.g. for case 1, an auxiliary property can be introduced to do the conversions betweenNullable<T>
andstring
, the latter of which can be persisted as XML attribute.)
It seems that case 2 can be solved using DataContractSeriallizer
. However, DataContractSeriallizer
generates Id by itself, and represent Id and its references with z:Id
andz:Ref
. As I’ve mentioned in previously (在 XmlSerializer 与 DataContractSerializer 之间抉择), DataContractSeriallizer
is rather rigid when you want to control the appearance of XML tree it generates.
Then, how to solve these problems?
Maybe, I’ll reinvent the wheel.
See Also
c# – Is there any way for my class to support serialisation as an XML attribute? – Stack Overflow