Мне было поручено внести изменения в устаревшее приложение VB6 Winform. Я обнаружил, что это приложение было излишне разделено на несколько библиотек DLL (некоторые из них были просто парой классов). Итак, я работаю над объединением некоторых библиотек DLL в основную программу, но столкнулся с проблемой, по которой я мог бы использовать некоторую помощь.
В одном из dll содержался класс CTest (Test.cls). Основная программа использовала его в следующих строках кода. strProgId - это строка с именем другой DLL.
Dim objTest As CTest
Set objTest = CreateTestObject(strProgId)
Public Function CreateTestObject(strProgId As String) As Object
10 On Error GoTo ErrorHandler
20 Set CreateTestObject = CreateObject(strProgId)
30 Exit Function
ErrorHandler:
40 UpdateErrorInfo "CreateTestObject", "Globals", strProgId
50 HandleError
End Function
Вот содержимое CTest
Option Explicit
Private m_strName As String
Private m_strDescription As String
Private m_cnnADO As ADODB.Connection
Public Property Get Name() As String
10 Name = m_strName
End Property
Public Property Let Name(strNewName As String)
10 m_strName = strNewName
End Property
Public Property Get Connection() As ADODB.Connection
10 Set Connection = m_cnnADO
End Property
Public Property Set Connection(cnnADO As ADODB.Connection)
10 Set m_cnnADO = cnnADO
End Property
Public Property Get Description() As String
10 Description = m_strDescription
End Property
Public Property Let Description(strNewDescription As String)
10 m_strDescription = strNewDescription
End Property
Public Function Run(ByVal strSTMType As String, _
instInstruments As CInstruments, objResults As CTestResults) As Boolean
End Function
Если CTest все еще является частью DLL, и у меня есть ссылка на нее в основной программе, она проходит через строку CreateTestObject без ошибки. Если я внесу класс в основную программу, он выдаст ошибку несоответствия типов.
Любая помощь приветствуется, спасибо заранее.