2013-01-03 45 views
0

有人可以幫我解決這個問題嗎?模板IEnumerable的C#模板方法<T>。可能嗎?

我有一個基類:

public class BaseShowFilter { 
    public int TotalCount { get; set; } 
    public int FromNo { get; set; } 
    public int ShowCount { get; set; } 
    public string SortFieldName { get; set; } 
    public bool SortAsc { get; set; } 
} 

,並從這個基類一對夫婦ChildClasses的。然後,我有一些其他類的存儲在(例如)

IEnumerable<OtherClassXXX> = .... 

我想一些過濾器適用所有的人都使用BaseShowFilter實施同樣的方法:

比如我需要

dstList = srcList.Skip(this.FromNo-1).Take(this.ShowCount); 

所以我需要在BaseShowFilter實現一個功能,將在參數的IEnumerable被接受,並且還將返回IEnumerable的

我怎麼能寫呢?在純粹的C++中,它會像1,2,3一樣簡單...但在這裏我不知道它是如何完成的。結果可能是這樣的:

public class BaseShowFilter { 
    public int TotalCount { get; set; } 
    public int FromNo { get; set; } 
    public int ShowCount { get; set; } 
    public string SortFieldName { get; set; } 
    public bool SortAsc { get; set; } 

    public T FilterList<T>(T SrcList) where T :IEnumerable<> { 
     return srcList.Skip(this.FromNo-1).Take(this.ShowCount); 
    } 
} 

回答

1

這是通常的方式做到這一點:

public IEnumerable<T> FilterList<T>(IEnumerable<T> source) 
{ 
    return source.Skip(this.FromNo - 1).Take(this.ShowCount); 
}