1

次の親クラスが定義されているとします。

Public Class Parent

    Public Property Prop1 As String = "MyDB1"

End Class

そして、それを継承したいのですが、そのプロパティが子クラスに対して異なる値を持つようにしたいのです。

私は次のようにそれを行うことができると思いました:

Public Class Child
    Inherits Parent

    Public Sub New()
        MyBase.New()
        MyBase.Prop1 = "MyDB2"
    End Sub

End Class

しかし、これがこれを行うための最良の方法なのか、それともオーバーライド可能なプロパティのようなものがあるのか​​、それともこれが全体として悪いプログラミング手法なのか、疑問に思っていました。

ありがとう!

4

2 に答える 2

3

プロパティをオーバーライド可能にするためのc#では、クラスメンバーをとしてマークすることができvirtual、このキーワードのvb.netequvaleはですOverridable

public virtual int MyProperty {get;set;}

このプロパティは、次のようにサブクラスでオーバーライドできます。

 public override int MyProperty {
  get{ 
         //return some other thing
     }
  } 

Vb.NETと同等:

スーパークラスで:

 Public Overridable Property MyProperty As Integer
        Get

        End Get

        Set

        End Set

    End Property

そしてサブクラスで:

  Public Overrides Property MyProperty As Integer
        Get
                //return some other thing
        End Get

    End Property
于 2012-12-13T19:31:03.413 に答える
2

あなたのコメントに基づいて、ここに私の意見があります:

  • 基本クラスを管理しているOverridable場合は、派生タイプのビジネスルールに基づいて値を変更することを目的としている場合に作成します。
  • 基本クラスを制御しておらず、プロパティを「オーバーライド」する必要がある場合は、基本プロパティを「非表示」にすることができます。C#では、次のようになりますnew public int MyProperty { ... }が、VBでこれがどのように実行されるかはわかりません
  • プロパティが別の値を返すことだけが必要な場合は、実行したことは問題ないようです。
于 2012-12-13T19:38:22.943 に答える