我的任务是对旧版 VB6 Winform 应用程序进行更改。我发现这个应用程序被不必要地拆分为多个 DLL(一些 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 行而不会出现错误。如果我将类引入主程序,则会引发类型不匹配错误。
任何帮助表示赞赏,在此先感谢您。