![]() |
1
13
可以调用泛型方法,请参阅文章 Invoking Generic Methods on Non-Generic Classes in PowerShell .
这并不简单,你需要使用
以防万一,从那里复制粘贴的代码:
|
![]() |
2
14
正如@Athari所说,调用MyMethod的最简单方法是使用MakeGenericMethod。由于他实际上并没有演示如何做到这一点,下面是一个经过验证的工作代码示例:
有输出
|
![]() |
3
5
这是PowerShell的一个限制,不能直接在PowerShell V1或V2 AFAIK中完成。 顺便说一句,你的泛型方法并不是真正的泛型方法。不应该是:
如果您拥有此代码并希望从PowerShell中使用它,请避免使用泛型方法或编写非泛型C包装器方法。 |
![]() |
4
2
好消息是,PowerShell v3在绑定到泛型方法(并具体化它们)方面做得更好你通常不需要做任何特别的事情,只要像平常一样调用它。我不能指定所有现在运行的标准,但是在我的经验中,某些通用参数的情况甚至需要在PultSeaveV4(可能是存在或重载或类似的情况下)。
类似地,我有时也很难将泛型参数传递给方法。。。例如通过
对我来说,解决这个问题的一个方法比MakeGenericMethod或其他方法简单得多,就是直接在我的脚本中放入一个快速的C包装类,然后让C整理所有的泛型映射。。。
下面是这种方法的一个示例,它将
这会产生:
我相信有更好的PowerShell方法来“压缩”两个数组,但你明白了。我在这里回避的真正挑战是有一个硬编码(在C类中)的第三个参数
|
![]() |
5
1
快速方式,如果没有名称冲突:
|