using System.Xml; using AutoMapper; namespace AutoMapperTest; public class Entity { public XmlDocument Statement { get; set; } } public class Model { public string Statement { get; set; } } public class StringToXmlConverter : IValueConverter { public XmlDocument Convert(string sourceMember, ResolutionContext context) { var xmlDoc = new XmlDocument(); if (!string.IsNullOrEmpty(sourceMember)) { xmlDoc.LoadXml(sourceMember); } return xmlDoc; } } public class Program { public static void Main(string[] args) { var config = new MapperConfiguration(cfg => { cfg.CreateMap() .ForMember(d => d.Statement, opt => opt.MapFrom(s => s.Statement.OuterXml)) .ReverseMap() // .ForMember(d => d.Statement, opt => opt.MapFrom(s => StringToXmlDoc(s.Statement))); // .ForMember( // d => d.Statement, // opt => opt.ConvertUsing(new StringToXmlConverter(), s => s.Statement) // ); .ForMember( dest => dest.Statement, map => map.Ignore() ).AfterMap( (apiModel, api) => api.Statement = StringToXmlDoc(apiModel.Statement) ); }); config.AssertConfigurationIsValid(); config.CompileMappings(); var mapper = config.CreateMapper(); var entity = new Entity { Statement = new XmlDocument() }; entity.Statement.LoadXml("xxx"); var model = mapper.Map(entity); Console.WriteLine(model.Statement); entity = mapper.Map(model); Console.WriteLine(entity.Statement); } private static XmlDocument StringToXmlDoc(string xml) { var xmlDoc = new XmlDocument(); if (!string.IsNullOrEmpty(xml)) { xmlDoc.LoadXml(xml); } return xmlDoc; } }