Еще одно использование полиморфизма версии COM объектов. Решив расширить функциональность объекта или исправить код можно создать новый класс на основе интерфейса. Соответственно новый клиент будет пользоваться новым объектом интерфейса, а старый старым. Что позволяет безболезненно выпускать все новые и новые более функциональные версии. Ни кто не запрещает собирать в класс реализации нескольких интерфейсов. Объявите два класса интерфейса:
Implements IClassNew Implements IChet Private Sub IChet_Method() MsgBox "Chet1 Method" End Sub Private Sub IChet_Test() MsgBox "Chet1 Test" End Sub Private Sub IClassNew_Test2() MsgBox "chet1 Test2" End Sub
И новая версия класса будет поддерживать и старый интерфейс и новый. Здесь совместимость идет на уровне интерфейсов. Есть один интерфейс, есть новый интерфейс. При таком подходе должен быть способ программно проверить, а поддерживает ли объект этот интерфейс. Он есть и реализовывается с помощью оператора TypeOf.
Dim interface As IChet Private Sub Command1_Click() Set interface = New ClassChet If TypeOf interface Is IClassNew Then MsgBox "Support IClassNew" End If Set interface = Nothing End Sub Private Sub Command2_Click() Set interface = New ClassChet1 If TypeOf interface Is IClassNew Then MsgBox "Support IClassNew" End If Set interface = Nothing End Sub
К ClassChet1 добавлен интерфейс IClassNew.