我在搜索中使用枚举进行排序列,因此我对不同类型的枚举有不同的枚举,即。
public enum SortablePersonFields
{
Id,
Name
}
public enum SortableCarFields
{
Color,
Price
}
我目前有一个帮助程序方法可以帮助我为我的视图生成列标题,并且它需要知道搜索当前按哪一列排序:
public static IHtmlString SortablePersonHeader(this AjaxHelper helper, string headerTitle, SortablePersonFields sortablePersonField, ISortableSearchCriteria searchCriteria){
if (searchCriteria.SortablePersonField== sortablePersonField)
{
...
}
}
我希望通过让它接受未指定的枚举来使此方法通用,但我发现这很困难,因为枚举不支持接口或继承。有没有解决这个问题的好方法?
ISortableSearchCriteria当前具有SortablePersonFields,因此它也必须是通用的。
没有枚举约束,但您可以执行以下操作:
ISortable<TEnum> where TEnum : struct, IComparable
{
TEnum Sort { get; }
}
public static IHtmlString SortablePersonHeader<TEnum>(this AjaxHelper helper, string headerTitle, TEnum sort, ISortable<TEnum> searchCriteria)
where TEnum : struct, IComparable
{
if(! typeof(TEnum).IsEnum) throw new ArgumentException("Requires enum type");
if(sort.Equals(searchCriteria.Sort))
{
}
}