using System.Collections.Generic;
public interface ISerializer
XDocument Serialize<T>(T dataDto);
T Deserialize<T>(XDocument document);
public class Serializer : ISerializer
private static readonly Dictionary<Type, Func<object, XDocument>> serializers = new Dictionary<Type, Func<object, XDocument>>
{ typeof(PatientDto), x => PatientDtoSerializer.Serializer((PatientDto)x) },
private static readonly Dictionary<Type, Func<XDocument, object>> deserializers = new Dictionary<Type, Func<XDocument, object>>
{ typeof(PatientDto), x => PatientDtoSerializer.Deserializer(x) },
public XDocument Serialize<T>(T dataDto)
return serializers[typeof(T)](dataDto);
public T Deserialize<T>(XDocument document)
return (T)deserializers[typeof(T)](document);
public static class PatientDtoSerializer
public static XDocument Serializer(PatientDto item)
public static PatientDto Deserializer(XDocument document)