[英]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.