2012-01-16 71 views
1

是否有可能从VB.net中的两个类继承?VB.net继承2类

我们正在开发继承自System.Web.UI.WebControls.Label的自定义用户控件。我们正计划实施一系列这些控件,但他们将共享大多数相同的附加属性。我们希望集中这些属性。

我已经看过接口,但它似乎只有'契约'属性,你需要实现。

想法?

+0

考虑只是使用[组合](http://en.wikipedia.org/wiki/Object_composition)来代替http://stackoverflow.com/a/178368/284240 – 2012-01-16 22:24:28

回答

2

不是。VB.net类型不可能继承多个类。可以实现无限数量的接口,但继承仅限于一种类型。

注意:这不是一个任意的VB.Net限制。这实际上是CLR中的一项限制。像C++/CLI这样的语言通过一些非常有趣的类型flattening例程来解决这个问题,但是在CLR级别,它们使用单​​一继承。

+0

谢谢JaredPar - 对我们实现的最佳方式的任何建议这个情况?忘记集中,只是在每个属性中实现? – 2012-01-16 22:22:46

+0

@ timmah.faase我会将通用功能放到一个类中,然后让用户只需拥有一个该类型的字段并使用相同的命名属性转发到字段类型。并可能为共享功能创建接口 – JaredPar 2012-01-16 22:24:05

0

不,你不能继承两个类。

然而,我们究竟面临的是你做同样的问题,并解决它以下列方式:

1)我们创建了由每个控件的实现,使他们可以很容易地发现的接口。

2)我们创建了一个设置类,其中包含所有类共有的设置和逻辑。

3)我们向1中创建的接口添加了一个属性,以暴露设置类,以便我们可以对所有属性执行标准操作。