2013-11-08 3 views
8

Я не знаком с powershell. Я пытаюсь сделать что-то, что будет одной строкой кода на C#, но в powershell это боль :(Powershell как создать делегата

В трех строках ниже wow3 выдает сообщение об ошибке. Кто-нибудь знает, почему wow3 бросает ошибку типа не найденной? Имеет ли этот синтаксис для делегатов работает только для встроенных типов

$wow1 =[System.Action[int]] 
$wow2 =[MyType] 
$wow3 =[System.Action[MyType]] 
+0

Где находится 'MyType'? Вам, вероятно, потребуется загрузить сборку или присвоить ей пространство имен. – BACON

+0

$ wow2 работает. зачем работать wow2, а не wow3? Это просто пример, в самом скрипте я ставлю полное имя – user1985513

+0

Будет ли работать ScriptBlock? http://technet.microsoft.com/en-us/library/hh847893.aspx – Eris

ответ

23

Эта строка PowerShell:

$wow1 = [System.Action[int]] 

равна этой линии C#:

var d = typeof(System.Action<int>); 

То есть $wow1 содержит System.RuntimeType. Это действительно то, что вы пытаетесь сделать?

Возможно, вам нужно что-то подобное?

C:\PS> [Action[int]]$action = {param($i) Write-Host "i is $i"} 
C:\PS> $action.Invoke(10) 
i is 10 
Смежные вопросы