0

私のインターフェイスは、いくつかのメソッドとプロパティで定義されています

Public Interface ITouchInterface
   'Inherits System.Windows.Controls.Canvas ' This is the problem

   'Methods and Properties

End Interface

私が抱えている問題を理解しています。インターフェイスは別のインターフェイスからしか継承System.Windows.Controls.Canvasできず、継承できないインターフェイスではないためです。

インターフェイスを実装する私のクラスは、キャンバスのプロパティに依存して機能します。

現在、インターフェイスの実装は次のようになっています。

Public Class TouchClass
    Inherits Canvas
    Implements ITouchInterface

    'Implementation
End Class

基本的に、これがアプリケーションの残りの部分で機能するには、キャンバスからの継承を指定するインターフェイスが必要です。アプリケーションの残りの部分は type のオブジェクトを想定していますがITouchInterface、現在の実装では、アプリケーションはクラスがインスタンス化されるまでキャンバス プロパティを認識しません。

たとえば、のリストを宣言しますITouchInterface。次に、インターフェースを実装するクラスが取り込まれます。ここで、このリストをループしてすべてのアイテムの幅を取得する必要がありますが、幅はキャンバスのプロパティであり、現時点ではアクセスできません。

私が気付いていないキャンバスのインターフェースは存在しますか、それとも代替ソリューションはありますか?

4

2 に答える 2

1

インターフェイスの役割を果たす抽象クラスを間に追加できます。もちろん、これによりさらにいくつかの結合が発生します...

これはまさにあなたが望むものになります: ITouchInterface を実装し、キャンバスから継承するクラスのいくつかの異なる実装を持つことができます

Public Interface ITouchInterface

End Interface

Public MustInherit Class TouchCanvasBase
    Inherits Canvas
    Implements ITouchInterface

End Class

Public Class TouchCanvas
    Inherits TouchCanvasBase

    'specific implementation

End Class
于 2013-01-18T09:35:04.957 に答える
0

継承は依然として であることを意味するため、ITouchInterfaceCanvas であると言っています。それは間違っているように聞こえます。

コメントで述べたように、代わりに構成を見てください。したがって、タッチ インターフェイスにはCanvas があります。それはすでに良く聞こえますが、まだ完全に正しいとは思えません。設計を再考し、ITouchInterface のクライアントが本当に必要としているものを確認してください。キャンバス全体が必要なのか、それとも別のインターフェイスに簡単に配置できるキャンバスに描画するためのいくつかのメソッドだけが必要なのか?

于 2013-01-18T09:40:01.603 に答える