using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Xml.Serialization;
using System.Runtime.Serialization;
private RefDomain parent;
protected set => this.name = value;
protected set => this.parent = value;
public Type RefEntityType
protected set => this.entityType = value;
[DataMember(Name = "RefEntityType")]
string RefEntityTypeString
return RefEntityType?.FullName;
var type = value == null ? null : Type.GetType(value);
public RefDomain(string name, RefDomain parent, Type entityType) => (this.name, this.parent, this.entityType) = (name, parent, entityType);
public static void Test()
var d = new RefDomain("foo", null, typeof(string));
var xml = d.ToContractXml();
var d2 = DataContractSerializerHelper.FromContractXml<RefDomain>(xml);
Assert.AreEqual(d.Name, d2.Name);
Assert.AreEqual(d.Parent, d2.Parent);
Assert.AreEqual(d.RefEntityType, d2.RefEntityType);
public static partial class DataContractSerializerHelper
public static string ToContractXml<T>(this T obj, DataContractSerializer serializer = null, XmlWriterSettings settings = null)
serializer = serializer ?? new DataContractSerializer(obj == null ? typeof(T) : obj.GetType());
using (var textWriter = new StringWriter())
settings = settings ?? new XmlWriterSettings { Indent = true };
using (var xmlWriter = XmlWriter.Create(textWriter, settings))
serializer.WriteObject(xmlWriter, obj);
return textWriter.ToString();
public static T FromContractXml<T>(string xml, DataContractSerializer serializer = null)
using (var textReader = new StringReader(xml ?? ""))
using (var xmlReader = XmlReader.Create(textReader))
return (T)(serializer ?? new DataContractSerializer(typeof(T))).ReadObject(xmlReader);
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("Failed with unhandled exception: ");