不确定这是否可行,但我想知道如何捕获分配给同一委托(多播)的两个方法的返回。我基本上想知道是否有办法捕获每个返回值?也许我必须迭代它,不是很确定..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MutiCastDelegate2
{
class Program
{
delegate string HelloWorldDelegate();
static void Main(string[] args)
{
HelloWorldDelegate myDel1 = ReturnHelloWorld;
HelloWorldDelegate myDel2 = ReturnHelloWorld2;
HelloWorldDelegate myMultiDelegate = myDel1 + myDel2;
Console.WriteLine(myMultiDelegate());
Console.ReadLine();
}
public static string ReturnHelloWorld()
{
return "Return Hello World";
}
public static string ReturnHelloWorld2()
{
return "Return Hello World 2";
}
}
}
答案 0 :(得分:2)
您可以使用MulticastDelegate.GetInvocationList()
来访问列表中的每个代理,然后您只需调用每个代理并检索结果:
var delegates = myMultiDelegate.GetInvocationList();
foreach (var d in delegates)
{
string result = (string) d.DynamicInvoke();
}