2015-02-06 44 views
0

我想重寫一個搜索幫助使用泛型而不是我下面有兩個相同的方法,除了傳入的列表類型。當我將<T>添加到類然後插入<T>到每個列表的類型聲明,我得到以下錯誤:C#通用搜索助手

類型'T'必須是不可爲空的值類型,以便將其用作泛型類型或方法'ProjectName中的參數'T'。 Helpers.Extensions.AttributeExtensions.GetDescription(T)」

public class SearchFilterHelper 
{ 
    public static SelectList GenreSelectList(List<GenreFilter> filters, int selectedValue = 0) 
    { 
     var GenreList = filters.Select(g => new { Value = g.ToString(), Description = g.GetDescription() }); 
     return new SelectList(GeneratedList, "Value", "Description", selectedValue.ToString()); 
    } 

    public static SelectList PublisherSelectList(List<PublisherFilter> filters, int selectedValue = 0) 
    { 
     var GeneratedList = filters.Select(g => new { Value = g.ToString(), Description = g.GetDescription() }); 
     return new SelectList(GeneratedList, "Value", "Description", selectedValue.ToString()); 
    } 
} 

這是我在使用泛型我第一次嘗試ñ幫助和理解如何重寫這個任何幫助,一如既往,讚賞...

+0

不能幫助你,如果我不知道什麼GenreFilter和PublisherFilter由 – 2015-02-06 15:44:46

+0

類型篩選和PublisherFIlter都來自枚舉,下面whcih的格式是: '公共枚舉GenreFilter { FamilyLife = 1, 健身= 2, 兒童= 3, 電腦= 4, 烹飪= 5, SelfHelp = 6, 商務= 7, 文學= 8 }' – michaelk46 2015-02-06 15:47:24

+1

這是一噸的自定義類型。你需要包含它們,當你不知道具體細節時很難做出更通用的東西。 – nvoigt 2015-02-06 15:48:55

回答

2

GetDescription方法你應用泛型約束,泛型參數是一個struct。如果你想從你的那個方法調用,你需要應用相同的通用約束。

+0

你的意思是這樣的:'g.GetDescription ()'?在這種情況下,我仍然得到相同的錯誤,所以我猜測我不明白你的意思是正確的。 – michaelk46 2015-02-06 15:43:36

+0

我終於明白你的意思了......謝謝Servy – michaelk46 2015-02-06 15:53:05