我是接口新手。需要一個接口的c#方法?
我有很多對象作爲DTO通過我的圖層傳遞給UI。其中一些非常複雜(很多屬性),但我只想在某些情況下在DropDown列表中使用它們。這些DTO全部具有int Id
和string Description
。
我想創建一個靜態函數,它接受這些對象之一的List<>
,並返回一個List<SelectListItem>
所以,我嘗試使用接口的第一次。
我創建了一個接口:
public interface IListableItem
{
int Id { get; set; }
string Description { get; set; }
}
然後,我分配了接口,我的DTO對象之一,我想轉換:
public class CategoryDto : BaseDto , IListableItem
{
public int PortfolioId { get; set; }
public string Description { get; set; }
public List<ExtendedSubCategoryDto> SubCategories { get; set; }
public bool IsExpenseCategory { get; set; }
public CategoryDto()
{
SubCategories = new List<ExtendedSubCategoryDto>();
}
}
然後,我創建了通用的方法需要列出類別dtos,並希望返回列表
public static List<SelectListItem> TranslateToSelectList(List<IListableItem> source)
{
var reply = source.Select(item => new SelectListItem
{
Value = item.Id.ToString(CultureInfo.InvariantCulture), Text = item.Description
}).ToList();
return reply;
}
但是,當我嘗試使用這個方法,將它傳遞給List,它失敗了。
model.Categories =
Translator.TranslateToSelectList(MyService.GetCategoriesByPortfolioId());
GetCategoriesByPortfolioId返回一個列表。
它的失敗與錯誤:
CategoryDto is not assignable to IListableItem
這也可能是我的一個基本的瞭解的接口問題,但我在做什麼錯了,我怎麼能解決這個問題?
'MyService.GetCategoriesByPortfolioId()'返回的類型是什麼? – Dirk