[英]How do I define the return type of an interface method to be another interface?
[英]How can I define my return type
我有以下代碼:
public IList<Content.Grid> GetContentGrid(string pk)
{
// How can I define result to hold the return
// data? I tried the following but it does not
// work:
var result = new IList<Content.Grid>();
var data = _contentRepository.GetPk(pk)
.Select((t, index) => new Content.Grid()
{
PartitionKey = t.PartitionKey
....
});
switch (pk.Substring(2, 2))
{
case "00":
return data
.OrderBy(item => item.Order)
.ToList();
break;
default:
return data
.OrderBy(item => item.Order)
.ToList();
break;
}
}
VS2012告訴我不需要中斷,所以我想做的是從開關內部刪除返回值,將結果存儲在變量中,然后在開關完成后執行以下操作:
return result;
有人可以告訴我如何聲明稱為result的變量。 我嘗試了以下操作,但這給出了語法錯誤:
var result = new IList<Content.Grid>();
您已經在交換機中返回了結果:
return data
.OrderBy(item => item.Order)
.ToList();
無需在切換之前聲明變量或在切換之后返回變量,因為您可以通過返回語句跳出切換。 (這就是為什么您不需要休息的原因)
但是,您可以使用以下方法:
IList<Content.Grid> result;
...
case "00":
result = data
.OrderBy(item => item.Order)
.ToList();
break;
default:
result = data
.OrderBy(item => item.Order)
.ToList();
break;
...
return result;
IList是一個接口。 您不能構造接口的實例。 您必須創建實現該接口的具體類型的實例,例如:
var result = new List<Content.Grid>();
IList
是一個接口,無法實例化。 您需要選擇IList
特定實現並創建非抽象類的對象,例如List
:
var result = new List<Content.Grid>();
您不能實例化接口,只能實現它們。
public class SomeList<T> : IList<T>
{
}
您需要一個類型參數才能轉到IList
,因此請在常規類中使用它
IList<T> result = New SomeList<T>();
那應該做。
不要使用var
,這樣就可以了; 您不需要默認值,因為它將被覆蓋。
IList<Content.Grid> result;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.