簡體   English   中英

讓方法接受未指定/通用的枚舉

[英]Having method accept unspecified/generic Enum

我使用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)
        {
        ...
        }
    }

我希望通過接受未指定的枚舉來使此方法通用,但是我發現這很困難,因為枚舉不支持接口或繼承。 有沒有解決這個問題的好方法?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM