public override bool Equals(ValueTagBase tag) { if (ReferenceEquals(tag, null)) { return(false); } StringValueTag stringTag = tag as StringValueTag; return(ReferenceEquals(stringTag, null) ? Equals(tag.GetValueAsString()) : Equals(stringTag)); }
public override int CompareTo(ValueTagBase tag) { if (ReferenceEquals(tag, null)) { return(1); } StringValueTag stringTag = tag as StringValueTag; string tagValue = ReferenceEquals(stringTag, null) ? tag.GetValueAsString() : stringTag.Value; return(string.Compare(Value, tagValue, StringComparison.CurrentCultureIgnoreCase)); }
public override int CompareTo(ValueTagBase tag) { if (ReferenceEquals(tag, null)) { return(1); } IntValueTag intTag = tag as IntValueTag; int? intValue = ReferenceEquals(intTag, null) ? default(int?) : intTag.Value; return(Nullable.Compare(Value, intValue)); }
public override void AddTag(TagBase tag) { ValueTagBase valueTag = tag as ValueTagBase; if (valueTag == null) { throw new InvalidRulesException( $"Tried to keep smallest non-value tag '{tag.RenderForLog()}' on '{Owner.RenderForLog()}'."); } TagBase tagToAdd = Tags .OfType <ValueTagBase>() .Where(x => x.Key == tag.Key) .Append(valueTag) .Min(); Tags.RemoveAll(x => x.Key == tag.Key); Tags.Add(tagToAdd); }