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.