我对 ParamArray 有疑问。默认情况下,这应该是可选的,但似乎并非如此。
我在 ASP 页中有以下代码。
dim oUtil, sSQL, oRs, bCARS
Set oUtil = server.CreateObject("CPUtility.Feature")
sSql = "select CARSFlag from Version"
set oRs = oUtil.Execute("", sSql)
然后在我的 COM 类中,我有以下定义
Public Function Execute(ByVal oDBConnection As Object, ByVal sSQL As String, ByVal ParamArray avParameters() As Object) As ADODB.Recordset
这会导致找不到/不支持 Execute 方法的错误。但是,如果我修改 ASP 页面中的 Execute 方法以将某些内容传递给 ParamArray,那么它就可以正常工作。
dim oUtil, sSQL, oRs, bCARS
Set oUtil = server.CreateObject("CPUtility.Feature")
sSql = "select CARSFlag from Version WHERE dbLanguage=? AND UtilityUpgrade=?"
set oRs = oUtil.Execute("", sSql, _
Array("lang", adVarchar, adParamInput, 1, "E"), _
Array("bit", adBoolean, adParamInput, 0, 1))
我不明白为什么省略 ParamArray 参数会导致找不到/不支持该方法。
这是使用 .NET 4.6.2 并且该类使用 GACUTIL 在 GAC 中注册,并且所有条目都已使用 REGASM 添加到注册表中