我有一些实用程序的 .NET 实现结构和一个.WSC
实例化 .NET 对象的脚本。目标是消除WSC
脚本并直接实例化和调用 .NET 实现。但这发现了一个命名问题。
WSC 中定义的类包含几个方法。这些方法之一是Finalize()
。函数名称在 .NET 中保留,因为它用于生命周期和 GC 管理。因此,WSC
调用具有不同名称的 .NET 函数:
<?xml version="1.0"?>
<component>
<public>
<method name="Finalize"/>
</public>
<object id="wrapper" progid="JS.Wrapper"/>
<script language="JScript">
<![CDATA[
// Processes last required steps and closes all logs
function Finalize() {
return wrapper.Finish();
}
// Any other function
function Foo() {
wrapper.Foo();
}
]]>
</script>
</component>
.NET 类实现以下Finish
功能:
[ComVisible(true)]
[ProgId("JS.Wrapper")]
public class MyCom
{
// Processes last required steps and closes all logs
public void Finish()
{
}
public void Foo()
{
}
}
有数以千计的脚本调用所有 Foo() 和 Bar() 函数。而且他们中的大多数也调用了该Finalize
函数。因此无法在 COM 接口更改函数名称。
- 如何使用名称使函数 Finish 成为 COM-Visible
Finalize
? - 有没有办法实现两个 Finalize 函数,一个用于 .NET 运行时,一个在 COM 接口处导出。
- 是否可以显式实现 COM 接口,即自定义实现 COM 接口?
有一个属性ComAliasName可用于使属性、索引器、字段、参数或通过别名返回可见。但它不能用于方法名称。如何使方法作为别名可见?