提供.NET方法作为委托回调

Ada*_*oll 16 .net c# powershell delegates powershell-2.0

将.NET方法作为代理回调传递给PowerShell中的.NET对象的语法是什么?

例如:

C#:

public class Class1
{
    public static void MyMethod(Action<object> obj)
    {
         obj("Hey!");
    }
}

public class Class2
{
    public static void Callback(object obj)
    {
         Console.Writeline(obj.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

电源外壳:

[Class1]::MyMethod([Class2]::Callback)
Run Code Online (Sandbox Code Playgroud)

这不起作用.

Dou*_*nke 12

通过Adam's和Oisin的聊天工作代码.

Add-Type -Language CSharpVersion3 -TypeDefinition @"
using System;

public class Class1
{
    public static void MyMethod(Action<object> obj)
    {
         obj("Hey!");
    }
}

public class Class2
{
    public static void Callback(object obj)
    {
         Console.WriteLine(obj.ToString());
    }
}
"@

$method   = [Class2].GetMethod("Callback") 
$delegate = [System.Delegate]::CreateDelegate([System.Action[Object]], $null, $method)

[Class1]::MyMethod($delegate)
Run Code Online (Sandbox Code Playgroud)