我的代码中有类似的内容:
[MVPSI.JAMS.CredentialRights]::Submit
我希望能够对其进行抽象,以便可以有效地更改它的一部分,以使它成为字符串:
$typeName = "MVPSI.JAMS.CredentialRights"
$function = "Submit"
但是我不能这样做:
$typeName::$function
我该怎么做?公平地说,我什至不知道在.Net \ PowerShell中这些特殊的[]
和::
被称为什么。
答案 0 :(得分:7)
我什至不知道.Net \ PowerShell中这些特殊的[]和::是什么
[...]
分隔类型文字;例如[MVPSI.JAMS.CredentialRights]
::
访问类型的静态成员。
请注意,这两种语法形式均特定于 PowerShell 。
使用类型文字的替代方法是将类型名称(字符串)广播到[type]
:
# The type name as a string.
$typeName = 'MVPSI.JAMS.CredentialRights'
# Get a reference to the type by its name.
$type = [type] $typeName
# The name of the static method to call.
$function = 'Submit'
# Call the static method on the type by its name.
# Note: Omitting '()' will output the method *signature*, including
# its overloads.
$type::$function()
答案 1 :(得分:2)
请勿在$ typeName周围使用引号,因为您正在定义字符串而不是引用MVPSI.JAMS.CredentialRights
类。请改用方括号。
$typeName = [MVPSI.JAMS.CredentialRights]
$function = "Submit"
$typeName::$function()
我相信::
是对给定类中的函数的静态调用。