从委托中获取所有返回的字符串形式的方法

时间:2013-06-18 13:13:03

标签: c# delegates

我在此代码中有关于委托的问题,我添加了三个委托方法。返回一个字符串。在行

  

string delOut = del(“Beer”);

到我宝贵的delOut代表assignet这个“长度:4”

如何收集委托中方法返回的所有字符串?

public class NaForum
{
    public delegate string MyDelegate(string s);

    public void TestDel()
    {
        MyDelegate del = s => s.ToLower();
        del += s => s.ToUpper();
        del += s => string.Format("Length : {0}", s.Length);

        string delOut = del("Beer");
        Console.WriteLine(delOut);
    }
}

感谢您的回答。

2 个答案:

答案 0 :(得分:9)

您需要使用Delegate.GetInvocationList

var results = new List<string>();

foreach (MyDelegate f in del.GetInvocationList()) {
    results.Add(f("Beer"));
}

现在,results包含所有返回值。

答案 1 :(得分:1)

请参阅C#:Creating Multicast delegate with boolean return type:您需要自己进行多播,以获得单独的返回值。