2012-02-02 19 views
1

如果我最常使用列表中的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

最简单的解决方案,现在看来,有一个静态解析方法就在范围< T>,只要你可以让T从一个字符串解析自己。为此我将使用TypeConverter

的设施
相关问题