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".

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top