vb.net: множественное наследование в интерфейсе

я сталкиваюсь с проблемой, касающейся множественного наследования в VB.net:

насколько я знаю VB.net не поддерживает множественное наследование в целом, но вы можете достичь своего рода множественного наследования, работая с интерфейсами (используя "Implements" вместо "Inherits"):

Public Class ClassName
    Implements BaseInterface1, BaseInterface2

End Class

это отлично работает для классов, но я хотел бы иметь интерфейс, наследующий некоторые базовые интерфейсы. Что-то вроде этого:--5-->

Public Interface InterfaceName
    Implements BaseInterface1, BaseInterface2

End Interface

но ключевое слово" Implements " не является разрешено для интерфейсов (что имеет смысл, конечно). Я попытался использовать своего рода абстрактный класс, который я знаю из Java:

Public MustInherit Class InterfaceName
    Implements BaseInterface1, BaseInterface2

End Class

но теперь мне нужно реализовать определенные методы из BaseInterface1 и BaseInterface2 в классе InterfaceName. Но поскольку InterfaceName также должен быть интерфейсом, я не хочу реализовывать эти методы в этом классе.

В C# вы можете сделать это довольно легко:

public interface InterfaceName: BaseInterface1, BaseInterface2 {}

вы знаете, если я могу сделать что-то похожие in VB.net?

4 ответов


подобно Java, в VB.NET интерфейсы "расширяют" другие интерфейсы. Это означает, что они" наследуют " свою функциональность. Они его не реализуют.

Public Interface InterfaceName
    Inherits BaseInterface1, BaseInterface2
End Interface

попробовать

Public Interface InterfaceName
    Inherits BaseInterface1
    Inherits BaseInterface2
End Interface

обходным путем является передача абстрактного класса (mustinherit) на задание определения каждого элемента в интерфейсе, который он не хочет реализовывать с помощью mustoverride. Попробуйте предопределить каждый из них в общем смысле, если это возможно, и сделать его переопределяемым.


Я был бы осторожен при наследовании интерфейсов.

пока он работает, я обнаружил, что если вы привязываете BindingList(InterfaceName) к BindingSource и BindingSource к DataGridView, то свойства в Interface1 и Interface2 не видны конструктору Visual Studio DataGridView для выделения в качестве столбцов DataGridView.