Exemplo n.º 1
0
 public void MergeFrom(IExtensionValue value)
 {
     if (value is RepeatedExtensionValue <T> )
     {
         field.Add((value as RepeatedExtensionValue <T>).field);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Tries to merge a field from the coded input, returning true if the field was merged.
        /// If the set is null or the field was not otherwise merged, this returns false.
        /// </summary>
        public static bool TryMergeFieldFrom <TTarget>(ref ExtensionSet <TTarget> set, CodedInputStream stream) where TTarget : IExtendableMessage <TTarget>
        {
            Extension extension;
            int       lastFieldNumber = WireFormat.GetTagFieldNumber(stream.LastTag);

            IExtensionValue extensionValue;

            if (set != null && set.ValuesByNumber.TryGetValue(lastFieldNumber, out extensionValue))
            {
                extensionValue.MergeFrom(stream);
                return(true);
            }
            else if (stream.ExtensionRegistry != null && stream.ExtensionRegistry.ContainsInputField(stream, typeof(TTarget), out extension))
            {
                IExtensionValue value = extension.CreateValue();
                value.MergeFrom(stream);
                set = (set ?? new ExtensionSet <TTarget>());
                set.ValuesByNumber.Add(extension.FieldNumber, value);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 3
0
 public void MergeFrom(IExtensionValue value)
 {
     if (value is ExtensionValue <T> )
     {
         var extensionValue = value as ExtensionValue <T>;
         codec.FieldMerger(ref field, extensionValue.field);
     }
 }
Exemplo n.º 4
0
        public bool Equals(IExtensionValue other)
        {
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return(other is RepeatedExtensionValue <T> &&
                   field.Equals((other as RepeatedExtensionValue <T>).field) &&
                   codec.Equals((other as RepeatedExtensionValue <T>).codec));
        }
Exemplo n.º 5
0
        public bool Equals(IExtensionValue other)
        {
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return(other is ExtensionValue <T> &&
                   codec.Equals((other as ExtensionValue <T>).codec) &&
                   Equals(field, (other as ExtensionValue <T>).field));
            // we check for equality in the codec since we could have equal field values however the values could be written in different ways
        }
Exemplo n.º 6
0
 private static bool GetValue <TTarget>(ref ExtensionSet <TTarget> set, Extension extension, out IExtensionValue value) where TTarget : IExtendableMessage <TTarget>
 {
     if (set == null)
     {
         value = null;
         return(false);
     }
     return(set.ValuesByNumber.TryGetValue(extension.FieldNumber, out value));
 }