gpt4 book ai didi

.net - 通过 COM 组件调用 .NET 程序集时出现 "Parameter is incorrect"错误

转载 作者:行者123 更新时间:2023-12-02 00:41:48 25 4
gpt4 key购买 nike

我有一个位于 GAC 中的 .NET 程序集。它已正确注册,以便 COM 组件可以调用它。此 .NET 程序集包含一个方法和该方法的重载:

public void Foo(string sValString, out string sOutString, string sOverloadString)
{
if( sOverloadString == string.Empty )
// do something
else
// do something else
}

public void Foo(string sValString, out string sOutString)
{
Foo(sValString, out sOutString, string.Empty);
}

现在,我可以使用 FoxPro 调用这个程序集:

o = CREATEOBJECT("FooNamespace.FooClass")   
sValString = "blah"
sOutString = "blahblah"
o.Foo(sValString, @sOutString, "") *OK!
o.Foo(sValString, @sOutString) *Generates error

调用三参数版本没问题,但是二参数版本在被COM组件调用时出现如下错误:

OLE 错误代码 0x80070057:参数不正确。

有什么想法吗?谢谢!

最佳答案

COM 根本不支持方法重载。当 Regasm.exe 生成类型库时,您的第二个 Foo() 函数将被重命名。如果 Foxpro 不能告诉您使用的名称,您可以使用 Oleview.exe 工具查看它。

最好的办法是完全避免该问题并简单地给重载另一个名称,这样您就不必猜测它。

关于.net - 通过 COM 组件调用 .NET 程序集时出现 "Parameter is incorrect"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2319632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com