我執行巴特迪斯的添加擴展方法Powershell的位置解決方案:是否可以在Powershell中使用帶有泛型類型定義的update-typedata?
http://bartdesmet.net/blogs/bart/archive/2007/09/06/extension-methods-in-windows-powershell.aspx
它的偉大工程!幾乎!他正在過濾掉泛型,但那是在黑暗時代(2007年),所以我試圖找出Powershell 3.0今天是否可能。這裏是什麼,我試圖做一個簡單的例子:
$ls = new-object collections.generic.list[string]
'generic'
update-typedata -force -typename collections.generic.list`1 `
-membertype scriptmethod -membername test -value {'test!'}
$ls.test() # fail
'string'
update-typedata -force -typename collections.generic.list[string] `
-membertype scriptmethod -membername test -value {'test!'}
$ls.test() # works!
此輸出:
generic
Method invocation failed because [System.Collections.Generic.List`1[[System.String, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]] doesn't contain a method
named 'test'.
At C:\Temp\blah5.ps1:12 char:1
+ $ls.test()
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
string
test!
現在,PowerShell是能夠與泛型類型定義工作。它似乎沒有與類型數據系統集成...
或者我做錯了嗎?有什麼辦法可以讓你做這項工作?