讓我首先說我對使用接口很新穎。如何在此場景中返回列表<MyInterface>
我在寫一個方法(GetClaimDetails),它將返回有關醫療保險索賠的信息。如果是聲明類型A,它將返回ClaimDetailA類的列表。如果聲明類型B,ClaimDetailB類的返回列表。這兩個類都共享公共屬性,但每個都有獨特的屬性。通用屬性在界面中實現。
我提取了一個名爲IClaimDetail的接口並設置了兩個接口來實現它。當我設置方法返回IClaimDetail並讓它返回實現IClaimsDetail的對象的實例時,我得到編譯器消息
'不能隱式地將類型'System.Collections.Generic.List DentalClaimDetail'轉換爲'System.Collections .Generic.List IClaimDetail」
private static List<IClaimDetail> GetClaimDetailsB(string claimNumber, string connectionStringName)
{
var claimReportRows = new List<DentalClaimDetail>();
..removed for brevity
return claimReportRows;
}
public class DentalClaimDetail : IClaimDetail
{
...
}
當一個方法返回一個接口,你只返回一個對象實現接口。正確?我究竟做錯了什麼?
查看Daniel White的回答。在.NET 4中,應該支持(類型協方差) – Jimmy 2009-07-31 00:41:53