• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #region Copyright notice and license
2 // Protocol Buffers - Google's data interchange format
3 // Copyright 2008 Google Inc.  All rights reserved.
4 //
5 // Use of this source code is governed by a BSD-style
6 // license that can be found in the LICENSE file or at
7 // https://developers.google.com/open-source/licenses/bsd
8 #endregion
9 
10 namespace Google.Protobuf.Reflection
11 {
12     internal sealed class ExtensionAccessor : IFieldAccessor
13     {
14         private readonly Extension extension;
15         private readonly ReflectionUtil.IExtensionReflectionHelper helper;
16 
ExtensionAccessor(FieldDescriptor descriptor)17         internal ExtensionAccessor(FieldDescriptor descriptor)
18         {
19             Descriptor = descriptor;
20             extension = descriptor.Extension;
21             helper = ReflectionUtil.CreateExtensionHelper(extension);
22         }
23 
24         public FieldDescriptor Descriptor { get; }
25 
Clear(IMessage message)26         public void Clear(IMessage message)
27         {
28             helper.ClearExtension(message);
29         }
30 
HasValue(IMessage message)31         public bool HasValue(IMessage message)
32         {
33             return helper.HasExtension(message);
34         }
35 
GetValue(IMessage message)36         public object GetValue(IMessage message)
37         {
38             return helper.GetExtension(message);
39         }
40 
SetValue(IMessage message, object value)41         public void SetValue(IMessage message, object value)
42         {
43             helper.SetExtension(message, value);
44         }
45     }
46 }
47