我正在致力于迁移使用 regsvr32 注册并主要在 vbscript 和 ASP Classic 中使用的旧版 VB6 COM 库。
新的 .NET 4.8 替代库已通过 regasm 注册。
一切都很好,直到我遇到了一些无法直接迁移的功能,因为我在这个领域没有足够的知识。
旧版 VB6 库具有以下 Typelibrary 代码(来自 OleView,为方便起见进行了缩减):
[id(0x00068), propget]
VARIANT_BOOL IncomeOverride([in] short index);
[id(0x00068), propput]
void IncomeOverride(
[in] short index,
[in] VARIANT_BOOL rhs
);
[id(0x00069), propget]
CY IncomeOverrideAmt([in] short index);
[id(0x00069), propput]
void IncomeOverrideAmt(
[in] short index,
[in] CY rhs
);
Run Code Online (Sandbox Code Playgroud)
调用者使用这些方法如下:
oTest.IncomeOverride(1) = True
oTest.IncomeOverrideAmt(1) = 12
Run Code Online (Sandbox Code Playgroud)
首先我尝试使用属性。但由于 C# 中没有可用的参数化属性,我不得不尝试如下方法:
[DispId(0x00068)]
bool IncomeOverride([In] short index);
[DispId(0x00068)]
void IncomeOverride([In] short index, [In] bool …Run Code Online (Sandbox Code Playgroud)