4
4
#if ! ENABLE_IL2CPP
5
5
6
6
using System ;
7
+ using System . Runtime . Serialization ;
8
+ using MessagePack . Resolvers ;
7
9
using Xunit ;
8
10
using Xunit . Abstractions ;
9
11
@@ -36,6 +38,13 @@ public void SerializeTypeWithReadWriteFields()
36
38
Assert3MemberClassSerializedContent ( MessagePackSerializer . Serialize ( new TestMessageWithReadWriteFields ( ) ) ) ;
37
39
}
38
40
41
+ [ Fact ]
42
+ public void PrivateMembersInBaseClass_StandardResolverAllowPrivate ( )
43
+ {
44
+ var options = StandardResolverAllowPrivate . Options ;
45
+ PrivateMembersInBaseClass_Helper ( options ) ;
46
+ }
47
+
39
48
private static void Assert3MemberClassSerializedContent ( ReadOnlyMemory < byte > msgpack )
40
49
{
41
50
var reader = new MessagePackReader ( msgpack ) ;
@@ -45,6 +54,17 @@ private static void Assert3MemberClassSerializedContent(ReadOnlyMemory<byte> msg
45
54
Assert . Equal ( 3 , reader . ReadInt32 ( ) ) ;
46
55
}
47
56
57
+ private void PrivateMembersInBaseClass_Helper ( MessagePackSerializerOptions options )
58
+ {
59
+ var obj = new DerivedClass { Name = "name" , BaseClassFieldAccessor = 15 , BaseClassProperty = 5 } ;
60
+ var bin = MessagePackSerializer . Serialize ( obj , options ) ;
61
+ this . logger . WriteLine ( MessagePackSerializer . ConvertToJson ( bin ) ) ;
62
+ var obj2 = MessagePackSerializer . Deserialize < DerivedClass > ( bin , options ) ;
63
+ Assert . Equal ( obj . BaseClassFieldAccessor , obj2 . BaseClassFieldAccessor ) ;
64
+ Assert . Equal ( obj . BaseClassProperty , obj2 . BaseClassProperty ) ;
65
+ Assert . Equal ( obj . Name , obj2 . Name ) ;
66
+ }
67
+
48
68
[ MessagePackObject ]
49
69
public class TestMessageWithReadOnlyField
50
70
{
@@ -83,6 +103,35 @@ public class TestMessageWithReadOnlyProperty
83
103
[ Key ( 2 ) ]
84
104
public int Property3 { get ; set ; } = 3 ;
85
105
}
106
+
107
+ [ DataContract ]
108
+ public class BaseClass
109
+ {
110
+ [ DataMember ]
111
+ private int baseClassField ;
112
+
113
+ public int BaseClassFieldAccessor
114
+ {
115
+ get => this . baseClassField ;
116
+ set => this . baseClassField = value ;
117
+ }
118
+
119
+ private int baseClassPropertyBackingField ;
120
+
121
+ [ DataMember ]
122
+ public int BaseClassProperty
123
+ {
124
+ get => this . baseClassPropertyBackingField ;
125
+ set => this . baseClassPropertyBackingField = value ;
126
+ }
127
+ }
128
+
129
+ [ DataContract ]
130
+ public class DerivedClass : BaseClass
131
+ {
132
+ [ DataMember ]
133
+ public string Name { get ; set ; }
134
+ }
86
135
}
87
136
}
88
137
0 commit comments