Skip to content

Commit 0c93bb0

Browse files
Martin SchiffnerMike-E-angelo
authored andcommitted
fixed an issue where strings would be handled as collection of chars
when decorated with XmlTextAttribute and when the serializer is configured with EnableXmlText()
1 parent b46e8b3 commit 0c93bb0

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlTextExtension.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ public IMemberSerializer Get(IMember parameter)
153153

154154
IMemberSerializer Create(IMemberSerializer serializer, Type owner)
155155
{
156-
var item = CollectionItemTypeLocator.Default.Get(serializer.Profile.MemberType);
156+
var item = serializer.Profile.MemberType == typeof(string)
157+
? null // strings should not be serialized as a collection of char
158+
: CollectionItemTypeLocator.Default.Get(serializer.Profile.MemberType);
157159
var itemType = _member.Get(owner)
158160
.Item1;
159161
var member = (IMemberSerializer)new MemberSerializer(serializer, _converters.Get(itemType));

test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue192Tests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ void Verify()
2929
serializer.Cycle(second)
3030
.Should().BeEquivalentTo(second);
3131

32-
var group = new Group2 {Type = GroupType.Large};
32+
var third = new SubjectWithMembers2 { Item = 123, Message = "Message", Time = DateTimeOffset.Now };
33+
serializer.Cycle(third)
34+
.Should().BeEquivalentTo(third);
35+
36+
var group = new Group2 {Type = GroupType.Large};
3337
serializer.Cycle(group)
3438
.Should().BeEquivalentTo(group);
3539

@@ -78,7 +82,17 @@ public class SubjectWithMembers
7882
public DateTimeOffset Time { [UsedImplicitly] get; set; }
7983
}
8084

81-
public class Group2
85+
public class SubjectWithMembers2
86+
{
87+
[XmlText]
88+
public string Message { [UsedImplicitly] get; set; }
89+
90+
public int Item { get; set; }
91+
92+
public DateTimeOffset Time { [UsedImplicitly] get; set; }
93+
}
94+
95+
public class Group2
8296
{
8397
[XmlText(Type = typeof(GroupType))] public GroupType Type = GroupType.Small;
8498
}

0 commit comments

Comments
 (0)