gpt4 book ai didi

c# - 获取委托(delegate)的所有 Target 实例

转载 作者:行者123 更新时间:2023-12-04 18:19:19 24 4
gpt4 key购买 nike

如果我只向委托(delegate)注册一个类的一种方法,我可以使用 delegate.Target ,但是当我从不同的类中订阅更多方法时,这不再起作用。还有其他方法可以访问此委托(delegate)的订阅者列表吗?

这是代码:foreach 循环在运行时被评估为 null(它编译)

    public delegate void WriteMessage(string msg);

internal class Program
{
private static void Main(string[] args)
{
var myClass = new MyClass();
var writer = new WriteMessage(myClass.WriteMessage);

writer += SaySomething; //method in this class
writer += myClass.SayShit; //instance class
writer += AnotherClass.Say; //static class

foreach(string target in (string[])writer.Target)
{
Console.WriteLine(target);
}

Console.ReadLine();
}

private static void SaySomething(string msg)
{
Console.WriteLine("HI!!!!");
}
}

完整代码:
http://pastebin.com/AzzRGMY9

最佳答案

Delegate[] list = delegate.GetInvocationList();

这将为您提供 Delegate 的数组对象,可用于获取 Target 的列表s。

关于c# - 获取委托(delegate)的所有 Target 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com