我想在PowerShell脚本中使用第三方API。我可以实例化对象和访问属性以及非重载方法,但每次调用重载方法都会失败并显示Cannot find an overload for "<method>" and the argument count: "<count>".
从C#调用时,API工作正常。
示例(此处$doc0
包含API中对象的实例,而Value
是我要调用的方法):
PS C:\> $doc0.Value.OverloadDefinitions
System.Object IPSFNetDataItem.Value(int fieldIndex)
System.Object IPSFNetDataItem.Value(string field)
PS C:\> $doc0.FieldName(0) #Non-overloaded methods are ok.
ID
PS C:\> $doc0.Value([int]0) #overloaded methods fail
Cannot find an overload for "value" and the argument count: "1".
At line:1 char:1
+ $doc0.Value([int]0) #overloaded methods fail
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
PS C:\> $doc0.Value([string]"why?") #overloaded methods fail
Cannot find an overload for "value" and the argument count: "1".
At line:1 char:1
+ $doc0.Value([string]"why?") #overloaded methods fail
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
我已经查看了其他类似的问题(例如here和here)但这些解决方案在这种情况下不起作用 - 在这个非常简单的情况下肯定没有模糊性的余地并且作为输出从OverloadDefinitions中可以看出,我并没有尝试做任何不受API支持的事情。
我认为PowerShell通常 通常不会解析方法调用;任何想法为什么会失败?