0

すでに投稿されている同様の問題を見つけようとしましたが、見つけたものと単に混乱しました。

次のオブジェクトが関係する状況があります
。-レポートにパラメータが含まれているドキュメントにパラメータが
含まれ
ているレポートとドキュメントパラメータが類似している
クエリにパラメータが含まれている
レポート、ドキュメント、クエリにすべて類似したパラメータがある

そこで、次のクラス構造を作成しました。-

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  

最後のプロパティは次のエラーを生成します:-

'PublicOverridesReadOnlyプロパティパラメーターAsclsReportParams'はオーバーライドできません'PublicMustOverrideReadOnlyプロパティパラメーターAsclsRepDocParams(Of clsRepDocParam、clsReportDocument)'は、戻り値のタイプが異なるためです。

分類レベルが正しいと思うので、これがどうなっているのかわかりません!?

タブのフォーマットが不足していることをお詫びします...スタックオーバーフローサイトは初めてです。うまくいけば改善されます;)

乾杯ジェフ

4

1 に答える 1

0

MustOverride プロパティは次のように宣言されます。

As clsRepDocParams(Of clsRepDocParam,clsReportDocument)

あなたのオーバーライドは単に次のように宣言されています

As clsReportParams 

ベース コレクションが指定されていないため、一致しません。おそらくオーバーライドを次のように宣言する必要があります

As clsRepDocParams(Of clsRepDocParam,clsReportDocument)

基本クラスに一致します。

作成する継承の追加レベルごとに、設計が非常に慎重に行われるように、さらに注意する必要があることに注意してください。そのコードをレビューする場合、その複雑さが実際にプロジェクトの存続期間にわたって報われると確信する必要があります。

于 2012-08-27T17:33:56.903 に答える