main
 1using System;
 2
 3namespace MoMoney.Domain.Core
 4{
 5    public interface IRange<T> where T : IComparable
 6    {
 7        bool contains(T item);
 8        T start_of_range { get; }
 9        T end_of_range { get; }
10    }
11
12    public class Range<T> : IRange<T> where T : IComparable
13    {
14        public T start_of_range { get; private set; }
15        public T end_of_range { get; private set; }
16
17        public Range(T start_of_range, T end_of_range)
18        {
19            if (start_of_range.CompareTo(end_of_range) < 0)
20            {
21                this.start_of_range = start_of_range;
22                this.end_of_range = end_of_range;
23            }
24            else
25            {
26                this.start_of_range = end_of_range;
27                this.end_of_range = start_of_range;
28            }
29        }
30
31        public bool contains(T item)
32        {
33            return start_of_range.CompareTo(item) <= 0 && end_of_range.CompareTo(item) >= 0;
34        }
35    }
36}