我在搜索时使用Enums进行排序列,因此我有不同类型的枚举,即。
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)
{
...
}
}
我希望通过让它接受一个未指定的Enum来使这个方法变得通用,但我发现这很困难,因为Enums不支持接口或继承。这有什么好办法吗?
ISortableSearchCriteria目前有一个SortablePersonFields,所以它也需要是通用的。
答案 0 :(得分:2)
没有枚举约束,但您可以执行以下操作:
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))
{
}
}