美文网首页
获取委托中每个方法的返回值及处理委托中的异常

获取委托中每个方法的返回值及处理委托中的异常

作者: Unity学习的路上 | 来源:发表于2016-12-23 21:42 被阅读0次

using System;

using System.Text;

namespace Test01

{

public delegate string State();//声明委托

class FanState

{

public string Fan()

{

return "风扇运行良好";

}

}

class ComputerState

{

public string Computer()

{

throw new Exception("电脑过热");//抛出一个异常

}

}

class TVState

{

public string TV()

{

return "电视运行良好";

}

}

class Program

{

static void Main(string[] args)

{

State stateCheck = new State(new FanState().Fan);//将方法添加到委托中

stateCheck += new ComputerState().Computer;//将方法添加到委托中

stateCheck += new TVState().TV;//将方法添加到委托中

Console.WriteLine(Report(stateCheck));//调用方法

}

public static string Report(State s)

{

if (s == null)

{

return null;

}

StringBuilder report = new StringBuilder();//创建一个StringBuider类的一个实例

Delegate[] DelArray = s.GetInvocationList();//这个方法的返回值是一个Delegate类型的数组,每一个委托中只有一个方法

foreach (State item in DelArray)//遍历委托数组

{

try

{

report.AppendFormat("{0}{1}{1}", item(), Environment.NewLine);//字符串拼接

}

catch(Exception e)//处理异常

{

object obj = item.Target;

report.AppendFormat("错误的方法是:{1}{0}错误的信息是{2}{0}错误的方法类型是{3}{0}{0}", Environment.NewLine, item.Method.Name, e.Message, obj.GetType().ToString());

}

}

return report.ToString();

}

}

}

相关文章

  • 获取委托中每个方法的返回值及处理委托中的异常

    using System; using System.Text; namespace Test01 { publi...

  • Spring mvc之HandlerMethodReturnVa

    通过委托给已注册HandlerMethodReturnValueHandlers的列表来处理方法返回值。以前解析的...

  • 委托+观察者模式

    /* * 委托:C++中的函数指针. * 定义一个委托类型:访问权限 delegate 返回值类型 委托类型名(形...

  • 多播委托与委托小总结

    多播委托中的方法调用的顺序与增加方法时的顺序是一致的。 多播委托中,如果其中的某个方法执行发生了异常,后面的方法不...

  • 委托

    委托 理解:委托就是将一个方法当作参数传递给另一个方法。 关键字有返回值类型,和参数类型,委托只可以给返回值类型和...

  • 1. 委托与事件

    什么是委托?委托有什么作用? 委托本质上是一个类,它定义了方法的返回值与参数列表。 委托的作用是可以将方法当作另一...

  • 2017.10.30

    委托的定义语法[访问修饰符] delegate 返回类型 委托名(参数列表);指定与委托匹配的方法的返回值类型 声...

  • C# 委托

    C#委托 C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的...

  • JS 事件委托

    什么是事件委托 事件委托,就是将本来 A 处理的事情,委托给 B 来处理,也称为事件代理。 每个函数都是对象,占用...

  • Kotlin高级特性

    委托 委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托...

网友评论

      本文标题:获取委托中每个方法的返回值及处理委托中的异常

      本文链接:https://www.haomeiwen.com/subject/twxlvttx.html