Question

Imaginons un scénario dans lequel, à l'aide de xml, l'utilisateur peut spécifier des plages de manière flexible, en utilisant n'importe quelle combinaison de & "gte &", & "; gt &"; , & "; lte &"; & "; lt &"; ou & "; eq &";.

Voici quelques exemples

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

Maintenant, il me faut deux classes, Range et RangeCollection, capables de gérer ces problèmes.

La classe Range pourrait ressembler à ceci:

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)
   {
      ....
   }
}

La classe RangeCollection devrait avoir un moyen simple de trier ses plages, de détecter les chevauchements et de renvoyer une plage correspondante à partir d'une valeur.

J'ai eu un jeu avec ça mais les choses deviennent rapidement terriblement complexes. Quelqu'un d'autre a-t-il vu une implémentation de cela ou veut-il tenter sa chance?

BTW. Je sais qu'il existe des threads similaires qui abordent les gammes, mais ils ne traitent pas de manière adéquate la différence entre & «Inférieur à ou égal à &»; et & "inférieur à &";.

Était-ce utile?

La solution

Vous avez besoin de arbre d'intervalle . Il n’est pas difficile de trouver la mise en œuvre en C # . pour le rendre adapté à vos besoins. Je ne vois aucun problème avec & Quot; & Lt; = & Quot; ou simplement & "; < &"; rapports.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top