1
リスト内でRangeクラスを使用するのが最も一般的な場合は、Listクラスを継承し、パーサアルゴリズムをコンストラクタに移動することをお勧めしますか?相続で継承を使用してコレクションクラスにリストをラップするのは良い方法ですか?
public class RangeParser
{
public static IList<Range<int>> Parser(string range)
{
// parse the string and return a new list
}
}
public class RestrictionsFoo
{
public static ICriterion BetweenRanges<T>(IList<Range<T>> ranges, string propertyName)
{
var disjunction = Restrictions.Disjunction();
foreach (Range<T> range in ranges)
disjunction.Add(Restrictions.Between(propertyName, range.De, range.Ate));
return disjunction;
}
}
:
public class Range<T>
{
public T From { get; set; }
public T To { get; set; }
}
継承なし
public class RangeCollection<T> : List<Range<T>>
{
public RangeCollection<T>(string range)
{
// parse the string and load this collection
}
}
public class RestrictionsFoo
{
public static ICriterion BetweenRanges<T>(RangeCollection<T> ranges, string propertyName)
{
var disjunction = Restrictions.Disjunction();
foreach (var range in ranges)
disjunction.Add(Restrictions.Between(propertyName, range.De, range.Ate));
return disjunction;
}
}