From f5a0a7feeb7dcde7f5eddd4548cbf08e9e3ccd57 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Fri, 23 Oct 2015 09:37:19 +0100 Subject: Fix clearing wrapper type fields with reflection. The nullable value type fields already worked, but the use of the CLR property concealed the difference between string and StringWrapper fields. --- csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'csharp/src/Google.Protobuf.Test/WellKnownTypes') diff --git a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs index fbc0ff07..c87ceb2f 100644 --- a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs +++ b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs @@ -345,5 +345,15 @@ namespace Google.Protobuf.WellKnownTypes var message = TestWellKnownTypes.Parser.ParseFrom(stream); Assert.AreEqual(6, message.Int32Field); } + + [Test] + public void ClearWithReflection() + { + // String and Bytes are the tricky ones here, as the CLR type of the property + // is the same between the wrapper and non-wrapper types. + var message = new TestWellKnownTypes { StringField = "foo" }; + TestWellKnownTypes.Descriptor.Fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.Clear(message); + Assert.IsNull(message.StringField); + } } } -- cgit v1.2.3