Я хочу создать функцию с проверкой типа.
function MyFunc(ByVal Obj As Object, Typ As Type) As Boolean
...
If TypeOf Obj Is typ Then
...
End Function
Для стандартных типов не проблема сравнить строку, возвращаемую TypeName(Obj)
, как описано здесь: 2010 VBA - Передайте тип как параметр
Но в iLogi c это сложно. Существует основной Тип Document
и производные «подтипы» AssemblyDocument
, DrawingDocument
...
Каждый из эти подтипы также относятся к типу Document
. Для моей цели меня не интересует, что это за подтип документа. Мне нужно проверить только основной тип Document
.
Лучше объяснить какой-то код:
Dim Obj As Document
Obj = ThisDoc.Document
Logger.Debug(TypeName(Obj)) ' <-- Returns: AssemblyDocument
Logger.Debug(TypeOf Obj Is Document) ' <-- Returns: True
Logger.Debug(TypeName(ThisDoc.Document)) ' <-- Returns: AssemblyDocument
Logger.Debug(TypeOf ThisDoc.Document Is Document) ' <-- Returns: True
Итак, есть ли способ передать тип функции, или это единственный способ чтобы получить список возможных подтипов и сравнить их элемент за элементом со строковым результатом TypeName(Obj)
?