Skip to content

Commit ea0b33a

Browse files
committed
Merge pull request #582 from tomgallard/master
Fixed bug where XmlDeserializer would not deserialize public nested type
2 parents bbad46f + 3c185e2 commit ea0b33a

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

RestSharp.Tests/NamespacedXmlTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,11 @@ private static string CreateElementsXml() {
253253
new XElement(ns + "Since", DateTime.Now.Year - i)
254254
));
255255
}
256-
root.Add(friends);
256+
root.Add(friends);
257+
258+
root.Add(new XElement(ns + "FavoriteBand",
259+
new XElement(ns + "Name", "Goldfinger")
260+
));
257261

258262
doc.Add(root);
259263
return doc.ToString();

RestSharp.Tests/SampleClasses/misc.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public class PersonForXml
4848
public Order Order { get; set; }
4949

5050
public Disposition Disposition { get; set; }
51+
public Band FavoriteBand { get; set; }
52+
public class Band
53+
{
54+
public string Name { get; set; }
55+
}
5156

5257
}
5358

RestSharp.Tests/XmlAttributeDeserializerTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,18 @@ public void Can_Deserialize_Custom_Formatted_Date()
290290

291291
Assert.Equal(date, output.StartDate);
292292
}
293+
[Fact]
294+
public void Can_Deserialize_Nested_Class()
295+
{
296+
var doc = CreateElementsXml();
297+
var response = new RestResponse { Content = doc };
298+
299+
var d = new XmlAttributeDeserializer();
300+
var p = d.Deserialize<PersonForXml>(response);
293301

302+
Assert.NotNull(p.FavoriteBand);
303+
Assert.Equal("Goldfinger",p.FavoriteBand.Name);
304+
}
294305
[Fact]
295306
public void Can_Deserialize_Elements_On_Default_Root()
296307
{
@@ -839,6 +850,10 @@ private static string CreateElementsXml()
839850
}
840851
root.Add(friends);
841852

853+
root.Add(new XElement("FavoriteBand",
854+
new XElement("Name", "Goldfinger")
855+
));
856+
842857
doc.Add(root);
843858
return doc.ToString();
844859
}

RestSharp/Deserializers/XmlDeserializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ protected virtual void Map(object x, XElement root)
9696
foreach (var prop in props)
9797
{
9898
var type = prop.PropertyType;
99-
100-
if (!type.IsPublic || !prop.CanWrite)
99+
var typeIsPublic = type.IsPublic || type.IsNestedPublic;
100+
if (!typeIsPublic || !prop.CanWrite)
101101
continue;
102102

103103
var name = prop.Name.AsNamespaced(Namespace);

0 commit comments

Comments
 (0)