Pergunta
Imagine um cenário onde, utilizando XML, o utilizador é capaz de especificar intervalos de uma maneira flexível, usando qualquer combinação de "gte", "GT", "LTE", "LT" ou "eq".
Aqui estão alguns exemplos
<rangeElement gte="0" lt="5" ... />
<rangeElement gt="3" lte="7" ... />
<rangeElement eq="5" ... />
<rangeElement gt="10.5" ... />
Agora, o que eu preciso é de duas classes, Gama e RangeCollection, que podem lidar com estes.
A classe Range pode ser algo como isto:
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)
{
....
}
}
A classe RangeCollection deve ter alguma forma básica de classificar suas gamas, detectando sobreposições e retornando uma gama correspondente atribuído um valor.
Eu tive um jogo com isso, mas as coisas rapidamente se diabolicamente complexo. Alguém já viu uma implementação deste, ou quer dar-lhe um tiro?
BTW. Eu sei que existem tópicos semelhantes que abordam varia, mas eles não lidar adequadamente com a diferença entre o "menos-que-ou-igual" e "menos do que".
Solução
O que você precisa é intervalo de árvore . Não é difícil encontrar em C # e modificá-lo para torná-lo adequado às suas necessidades. Não vejo qualquer problema com "<=" ou apenas "<" relações.