2014-12-07 116 views
1

背景

我有幾十個模型和每個我建立了搜索&過濾器方法,返回該模型的過濾列表。我將這個方法用於Web項目,並通過WebApi將結果列表返回給視圖(如JSON)。是否可以將具有泛型類型的模型配置爲屬性?

我想創建一個模型,其中包括結果列表以及代表在服務器端找到的結果總數的int屬性(如果您將分頁考慮在內,我將僅返回找到的子集結果到視圖)。

問題

是否有可能創建通用響應模型是這樣的:

public class FilteredResultModel 
{ 
    public List<T> Results { get; set; } 
    public int TotalResultsFound{ get; set; } 
} 

或者我需要爲每種類型的模型的單獨的結果模型我搜索和過濾:

public class FilteredCatResultModel 
    { 
     public List<Cat> Results { get; set; } 
     public int TotalResultsFound{ get; set; } 
    } 

public class FilteredDogResultModel 
    { 
     public List<Dog> Results { get; set; } 
     public int TotalResultsFound{ get; set; } 
    } 

如果有可能,它將如何完成?

已解決!

由於梅德等人在下面的意見,這是解決:

public class FilteredResultModel<T> //<----(added the <T>) 
{ 
    public List<T> Results { get; set; } 
    public int TotalResultsFound{ get; set; } 
} 

實現示例:

var resultModel = FilteredResultModel<Dog> 
      { 
       Count = 4000, 
       Results = new List<Dog>(); 
      }; 
+3

爲什麼不只是'FilteredResultModel '? – Dmitry 2014-12-07 01:09:43

+0

除非這些類別應該提供超出此處所提供的附加功能,否則您可能會返回一個列表或ReadOnlyCollection 。 – 2014-12-07 01:09:46

+0

@德米特里 - 請你詳細說明這將如何工作?沒關係 - 我想我現在看到了。 。 。 – 2014-12-07 01:12:07

回答

2

只需將<T>添加到類名稱:

public class FilteredResultModel<T> 
{ 
    public List<T> Results { get; set; } 
    public int TotalResultsFound{ get; set; } 
} 
相關問題