无法在PowerShell中调用.NET API的重载方法

时间:2017-09-06 16:27:06

标签: powershell overloading overload-resolution powershell-v5.0

我想在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

我已经查看了其他类似的问题(例如herehere)但这些解决方案在这种情况下不起作用 - 在这个非常简单的情况下肯定没有模糊性的余地并且作为输出从OverloadDefinitions中可以看出,我并没有尝试做任何不受API支持的事情。

我认为PowerShell通常 通常不会解析方法调用;任何想法为什么会失败?

0 个答案:

没有答案