1

想象一个场景,使用 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 类应该有一些对其范围进行排序、检测重叠并返回给定值的相应范围的基本方法。

我玩过这个,但事情很快变得非常复杂。有没有其他人看到过这个的实现,或者想试一试?

顺便提一句。我知道有类似的线程可以处理范围,但它们没有充分处理“小于或等于”和“小于”之间的区别。

4

1 回答 1

2

你需要的是区间树在 C# 中找到实现并对其进行修改以使其适合您的需求并不难。我认为“<=”或“<”关系没有任何问题。

于 2009-01-22T01:26:28.197 回答