Это хорошая практика, чтобы обернуть список в класс коллекции, используя наследование? - PullRequest
1 голос
/ 02 февраля 2012

Если я чаще всего использую класс Range в списках, было бы целесообразно наследовать класс List и переместить алгоритм синтаксического анализа в конструктор?

public class Range<T>
{
    public T From { get; set; }
    public T To { get; set; }
}

Без наследования:

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 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;
        }
}

1 Ответ

1 голос
/ 22 февраля 2012

Кажется, что самое простое решение - использовать статический метод Parse прямо в Range , при условии, что вы можете иметь T для самого анализа из строки. Для этого я бы использовал средства TypeConverter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...