Une collection de gammes
-
19-08-2019 - |
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 à &";.
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.