public void TestMethod1() { string xml = @"<Current Name=""Poul"" Age=""21""><Credential Key=""123""/></Current>"; var mapper = new XmlMapper <Current>(); mapper.AddMapping("Name", c => c.Name); mapper.AddMapping("Age", c => c.Age); mapper.AddMapping("Credential", c => c.Credential); mapper.AddMapping("Key", c => c.Credential.Key); var current = new Current(); var doc = XDocument.Parse(xml); var result = doc.Elements().Where(c => c.Attribute("Name") != null); current.GetType().GetProperty("Name").SetValue(current, result.First().Attribute("Name").Value); current.GetType().GetProperty("Age").SetValue(current, int.Parse(result.First().Attribute("Age").Value)); Assert.AreEqual("Poul", current.Name); }