让方法接受未指定/泛型枚举



我在搜索中使用枚举进行排序列,因此我对不同类型的枚举有不同的枚举,即。

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))
    {
    }
}

最新更新