Make extension reflection helper use GetOrRegisterExtension

pull/5936/head
Sydney Acksman 6 years ago
parent 9163a6f1ad
commit bf4f6c5431
  1. 14
      csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs
  2. 2
      csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs

@ -97,6 +97,20 @@ namespace Google.Protobuf.Reflection
Assert.AreEqual(message.GetExtension(OptionalBoolExtension), Proto2.TestAllExtensions.Descriptor.FindFieldByNumber(OptionalBoolExtension.FieldNumber).Accessor.GetValue(message));
}
[Test]
public void GetRepeatedExtensionValue()
{
// check to make sure repeated accessor uses GetOrRegister
var message = new Proto2.TestAllExtensions();
Assert.IsNull(message.GetExtension(RepeatedBoolExtension));
Assert.IsNotNull(Proto2.TestAllExtensions.Descriptor.FindFieldByNumber(RepeatedBoolExtension.FieldNumber).Accessor.GetValue(message));
Assert.IsNotNull(message.GetExtension(RepeatedBoolExtension));
message.ClearExtension(RepeatedBoolExtension);
Assert.IsNull(message.GetExtension(RepeatedBoolExtension));
}
[Test]
public void Clear()
{

@ -230,7 +230,7 @@ namespace Google.Protobuf.Reflection
}
else if (extension is RepeatedExtension<T1, T3>)
{
return extensionMessage.GetExtension(extension as RepeatedExtension<T1, T3>);
return extensionMessage.GetOrRegisterExtension(extension as RepeatedExtension<T1, T3>);
}
else
{

Loading…
Cancel
Save