Вот более конкретный ответ. Это демонстрирует, как вы можете использовать базовый класс для своих набранных наборов данных с целью замены в вашем собственном соединении или классах команд.
Установите это как «BaseClass» для каждого из ваших типизированных адаптеров таблиц, заменив «System.ComponentModel.Component».
Используя «MustInherit / MustOverride» («Абстрактный» в C #), вы можете получить свойства, которые иначе не будут доступны.
Public MustInherit Class SuperTableAdapter
Inherits System.ComponentModel.Component
Public MustOverride ReadOnly Property MyCommandCollection As Data.SqlClient.SqlCommand()
Public Sub New()
MyBase.New()
'With the command collection exposed, you can replace it with your own.'
For i = 0 To MyCommandCollection.Length - 1
'Now you can put in your special command class here'
Dim myspecialCommand As New Data.SqlClient.SqlCommand()
MyCommandCollection(i) = myspecialCommand
Next
End Sub
End Class
Для каждого из ваших адаптеров таблиц, которые вы установили для наследования базового класса, вы должны переопределить обязательное свойство "MustOverride". Без этого он не скомпилируется. Если вы добавите код, но не установите базовый класс TableAdapter, он также не будет компилироваться. Это хорошая вещь; это гарантирует, что вы делаете это правильно.
Namespace DataSet1TableAdapters
Partial Public Class Table1TableAdapter
Public Overrides ReadOnly Property MyCommandCollection As System.Data.SqlClient.SqlCommand()
Get
Return Me.CommandCollection
End Get
End Property
End Class
Partial Public Class Table2TableAdapter
Public Overrides ReadOnly Property MyCommandCollection As System.Data.SqlClient.SqlCommand()
Get
Return Me.CommandCollection
End Get
End Property
End Class
End Namespace
Теперь вы можете поместить все виды специального кода в свой SuperTableAdapter. Если вам нужен доступ к тому, что не было открыто, просто используйте «MustOverride», чтобы гарантировать его доступность.