예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #4
0
            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);
            }