2012-08-27 27 views
0

我試圖找到已發佈的類似問題,但只是與我發現的內容混淆。錯誤在VB.Net中使用多個通用類

我有包括下列對象的情況: -
報告中包含的參數
文件包含參數
報告和文件參數類似於
查詢包含參數
報告,文件和查詢都具有類似的參數

所以我創建了以下類結構: -

Public MustInherit Class clsBaseCollection(Of TclsBaseChild As clsBase, TclsBaseParent As clsBase) 

Public MustInherit Class clsParams(Of TclsParam As clsParam, TclsRootObject As clsRootObject) 
    Inherits clsBaseCollection(Of TclsParam, TclsRootObject) 

Public MustInherit Class clsRepDocParams(Of TclsRepDocParam As clsRepDocParam, TclsReportDocument As clsReportDocument) 
    Inherits clsParams(Of TclsRepDocParam, TclsReportDocument) 

Public Class clsReportParams 
    Inherits clsRepDocParams(Of clsReportParam, clsReport) 


Public MustInherit Class clsReportDocument  
    MustOverride ReadOnly Property Parameters() As clsRepDocParams(Of clsRepDocParam,clsReportDocument) 

Public Class clsReport 
    Inherits clsReportDocument 
    Private _Params As clsReportParams 
    Public Overrides ReadOnly Property Parameters() As clsReportParams 
     Get 
      If _Params Is Nothing Then 
       BeginUpdate() 
       _Params = New clsReportParams(Me) 
       EndUpdate() 
      End If 
      Return _Params 
     End Get 
    End Property 

最後一個屬性產生以下錯誤: -

「公共覆蓋只讀屬性參數作爲clsReportParams'無法重寫‘公共MustOverride只讀屬性參數作爲clsRepDocParams(中clsRepDocParam,clsReportDocument)’,因爲他們通過他們的返回類型不同。

我不能看到這是如此,因爲我相信我的分類水平正確!?

道歉缺乏標籤格式的...林新來的堆棧溢出的網站,希望我將改善;)

乾杯 傑夫

+0

請告訴我們Vb和.Net的版本。 – RBarryYoung

+0

Visual STudio 2010 pro和dotnet 4,並感謝Jared的重新格式化... – JeffS

回答

0

的MustOverride屬性被聲明爲

As clsRepDocParams(Of clsRepDocParam,clsReportDocument) 

您的覆蓋被簡單地聲明爲

As clsReportParams 

它沒有指定基礎集合,因此它們不匹配。您應該聲明覆蓋爲

As clsRepDocParams(Of clsRepDocParam,clsReportDocument) 

以匹配基類。

值得注意的是,對於您創建的每一個附加級別的繼承,您都需要非常小心以確保您的設計非常謹慎!如果我正在審查這些代碼,我需要確信複雜性實際上將在項目的整個生命週期中得到回報。