让一个接口继承自canvas WPF VB.net

时间:2013-01-18 09:06:51

标签: wpf vb.net class interface

我的界面定义了一些方法和属性

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的列表。然后使用实现该接口的类填充它。现在我需要循环遍历此列表并获取每个项目的宽度,但宽度是画布的属性,此时无法访问。

是否存在我不知道的画布界面或是否有其他替代解决方案?

2 个答案:

答案 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,还是只需要一些方法来绘制它,你可以轻松地将它放在另一个界面中?