我的界面定义了一些方法和属性
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
基本上,为了使用我的应用程序的其余部分,我需要接口来指定canvas的继承。应用程序的其余部分期望类型为ITouchInterface
的对象,但是对于我当前的实现,应用程序在实例化类之前不知道画布属性。
例如,我声明了ITouchInterface
的列表。然后使用实现该接口的类填充它。现在我需要循环遍历此列表并获取每个项目的宽度,但宽度是画布的属性,此时无法访问。
是否存在我不知道的画布界面或是否有其他替代解决方案?
答案 0 :(得分:1)
您可以添加一个抽象类,在其中扮演您的界面角色。当然这会导致更多的耦合...
这会产生你想要的结果:你可以有几个不同的类实现,它实现了ITouchInterface并从canvas继承
Public Interface ITouchInterface
End Interface
Public MustInherit Class TouchCanvasBase
Inherits Canvas
Implements ITouchInterface
End Class
Public Class TouchCanvas
Inherits TouchCanvasBase
'specific implementation
End Class
答案 1 :(得分:0)
继承仍然意味着是,因此您说您的ITouchInterface 是 Canvas。这听起来不对。
正如评论中所说的那样,反过来看,这意味着有一个。所以你的触摸界面有一个画布。这听起来已经好了,但似乎还不完全正确。重新思考您的设计,看看ITouchInterface的客户真正需要什么。他们需要整个Canvas,还是只需要一些方法来绘制它,你可以轻松地将它放在另一个界面中?