2011-01-18 36 views
1

継承クラスに問題があります。見て、次のVB.NET 2.0/VS 2005コード:サブクラス間の共有変数

MustInherit Class templateclass 
    Public Shared x As String 
End Class 

Class child1 
    Inherits templateclass 
End Class 

Class child2 
    Inherits templateclass 
End Class 

templateclassは、子クラスによって継承されることは勿論である共有変数xを持っています。しかし、私はすべての子クラスが1つのxだけを共有しているのだろうか! これまでは、共有変数はクラスのインスタンス間でのみ共有され、すべての子クラスでは共有されないと考えました。これは私が2つのわずかに異なるバージョンで必要な基本クラスを持っており、共有変数を共有するべきではないので、これは非常に面倒です。クラスには多くの共有変数があるため、子どものそれぞれをシャドーイングすることは非常に面白くて、多くの作業を引き起こします。 誰かにこの問題のより良い解決策がありますか?事前に

おかげで、

+1

抽象クラス(MustInherit)を一般的にすることができます。同じ問題についてこのC#質問をご覧ください:http://stackoverflow.com/questions/3542171/c-abstract-class-static-field-inheritance –

+0

VB.netのバージョンを教えてください。 – RBarryYoung

+0

問題は、すべてを再設計することによって解決されました。あなたの答えをありがとう。 – Sagi

答えて

0

あなたは(メンバーを非共有として)専用のクラスで共有状態をラップし、そのクラスの共有メンバーの子クラスのそれぞれを与えることができます。インスタンスを通じて共有状態にアクセスする必要がある場合は、両方の子クラスが継承し、特定のサブクラスの共有状態を返すプロパティを実装できます。ただし、このプロパティを共有することはできません。

関連する問題