プロパティ アクセサを 'NotOverridable' プロパティ内で '<accessmodifier>' として宣言できません。
更新 : 2007 年 11 月
NotOverridable プロパティの Get ステートメントまたは Set ステートメント (Visual Basic) に、Private キーワードが含まれています。
Property ステートメントに NotOverridable と Private を組み合わせて指定できない理由を以下に説明します。
基本クラスのプロパティまたはプロシージャをオーバーライドしていないプロパティまたはプロシージャには、既定で NotOverridable が設定されます。
しかし、基本クラスのプロパティまたはプロシージャをオーバーライドした派生クラスのプロパティまたはプロシージャには、既定で Overridable が設定されます。オーバーライドの階層構造を終了するには、オーバーライドを NotOverridable で宣言します。NotOverridable はこれ以外の目的には使用できません。つまり、NotOverridable は Overrides と組み合わせた場合しか使用できません。
基本クラスのプロパティまたはプロシージャが Private (Visual Basic) で宣言されている場合、派生クラスからアクセス不可能であるため、そのプロパティまたはプロシージャをオーバーライドできません。このため、Private と Overridable を組み合わせて使うことはできません。
プロパティまたはプロシージャをオーバーライドするには、オーバーライドしているプロパティまたはプロシージャとシグネチャが同じであるだけでなく、アクセス レベルも同じであることが必要です。つまり、オーバーライドしているプロパティまたはプロシージャに Private を指定できません。オーバーライド可能なプロパティまたはプロシージャには、Private を指定できないからです。
NotOverridable を指定できるのは、オーバーライドしているプロパティまたはプロシージャだけなので、これを Private と組み合わせて指定することはできません。
同じ理由で、オーバーライドしているプロパティの個々のプロパティ プロシージャ (Get および Set) を Private にすることはできません。
Error ID: BC31106
このエラーを解決するには
- Get ステートメントまたは Set ステートメントから Private キーワードを削除するか、Property ステートメントから Overrides キーワードと NotOverridable キーワードを削除します。