public void MergeFrom(IExtensionValue value) { if (value is RepeatedExtensionValue <T> ) { field.Add((value as RepeatedExtensionValue <T>).field); } }
/// <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); } }
public void MergeFrom(IExtensionValue value) { if (value is ExtensionValue <T> ) { var extensionValue = value as ExtensionValue <T>; codec.FieldMerger(ref field, extensionValue.field); } }
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)); }
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 }
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)); }