提供 .NET 方法作为委托回调 [英] Provide a .NET method as a delegate callback

查看:15
本文介绍了提供 .NET 方法作为委托回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 PowerShell 中将 .NET 方法作为委托回调传递给 .NET 对象的语法是什么.

What is the syntax to pass .NET method as a delegate callback to a .NET object in PowerShell.

例如:

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());
    }
}

PowerShell:

PowerShell:

[Class1]::MyMethod([Class2]::Callback)

这不起作用.

推荐答案

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

Working code via Adam's and Oisin's chat.

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)

这篇关于提供 .NET 方法作为委托回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆