Context
У меня есть родительский интерфейс, IParent
,
Option Explicit
Public Sub DoParentStuff()
End Sub
дочерний интерфейс, реализующий IParent
, IChild
,
Option Explicit
Implements IParent
Private Sub IParent_DoParentStuff()
End Sub
Public Sub DoParentStuff()
End Sub
и конкретную реализацию IChild
, CStandardChild
.
Option Explicit
Implements IChild
Private Sub IChild_DoParentStuff()
End Sub
Public Sub DoParentStuff()
IChild_DoParentStuff
End Sub
Затем я создал модуль, который передает переменную типа IChild
в подпрограмму с одним параметром типа IParent
.
Option Explicit
Private Sub Test(ByRef parent As IParent)
parent.DoParentStuff
End Sub
Public Sub Main()
Dim child As IChild
Set child = New CStandardChild
Test child
End Sub
Я могу скомпилировать проект VBA без ошибок.Но когда я запускаю Main
, я получаю ошибку времени выполнения
Ошибка времени выполнения '13':
Несоответствие типов
Отладчик указывает на код Test child
.
Вопрос
Почему я получаю ошибку несоответствия типов во время выполнения?Как я могу передать child
в Test()
без получения этой ошибки?
Что я пробовал
Я смотрел на приведение IChild
к IParent
.Однако я не использую VB.NET
, поэтому у меня нет доступа к DirectCast
и CType
.Говоря так, если я правильно реализовал IParent
и IChild
, я не думал, что приведение необходимо.