Коллекция диапазонов - PullRequest
       14

Коллекция диапазонов

1 голос
/ 22 января 2009

Представьте себе сценарий, в котором, используя xml, пользователь может гибко указывать диапазоны, используя любую комбинацию "gte", "gt", "lte", "lt" или "eq".

Вот несколько примеров

<rangeElement gte="0" lt="5" ... />
<rangeElement gt="3" lte="7" ... />
<rangeElement eq="5" ... />
<rangeElement gt="10.5" ... />

Теперь мне нужны два класса, Range и RangeCollection, которые могут справиться с ними.

Класс Range может выглядеть примерно так:

public class Range
{
   public LowerBoundInclusive { get; set; }
   public LowerBoundExclusive { get; set; }
   public UpperBoundInclusive { get; set; }
   public UpperBoundExclusive { get; set; }
   public object Data { get; set; }

   public Range(XElement xmlElement)
   {
      ....
   }
}

Класс RangeCollection должен иметь некоторый базовый способ сортировки его диапазонов, обнаружения перекрытий и возврата соответствующего диапазона при заданном значении.

У меня была игра с этим, но вещи быстро становятся чертовски сложными. Кто-нибудь еще видел реализацию этого или хочет попробовать?

КСТАТИ. Я знаю, что есть похожие потоки, которые работают с диапазонами, но они не имеют адекватного отношения к разнице между «меньше или равно» и «меньше чем».

1 Ответ

2 голосов
/ 22 января 2009

Что вам нужно, это дерево интервалов . Нетрудно найти реализацию в C # и изменить ее так, чтобы она соответствовала вашим потребностям. Я не вижу проблем с "<=" или просто "<" отношениями. </p>

...