委托或事件处理程序如何返回bool类型?

时间:2012-08-18 19:55:45

标签: asp.net windows-phone-7 c#-4.0 windows-phone-7.1

我正在使用Web服务来调用我的方法,我的方法返回一个Boolean.And这是我在cs文件中的代码。

`obj = new GBService.PreGroupbookSreviceSoapClient();
 obj.AddBasicInfoCompleted +=new EventHandler<GBService.AddBasicInfoCompletedEventArgs>(obj_AddBasicInfoCompleted);`

现在的问题是VS2010创建的这个“ obj_AddBasicInfoCompleted ”方法默认返回void类型。我希望在这个地方生成一个Boole类型的方法。 当我将方法类型由void更改为Boolean或bool时,VS2010在上面提到的行上给出了一个错误:“ bool obj_AddBasicInfoCompleted(对象发送者,GBService.AddBasicInfoCompletedEventArgs e)具有错误的返回类型。

我不知道该怎么做.Plz帮助我感谢和问候。

2 个答案:

答案 0 :(得分:2)

  

我想在这个地方生成一个Boole类型的方法。

然后您需要更改使用的委托类型...因为EventHandler<TEventArgs> 没有返回值。

你还没有真正说为什么你想要这样做,但一般来说,如果你试图违反.NET的常规惯例,你应该重新考虑你的设计。特别是,如果您尝试使用期望EventHandler<TEventArgs>的标准组件并使用它公开事件,您会如何期望使用返回值?

答案 1 :(得分:0)

事件本质上通常用于获得返回值实际上(几乎)没有意义的情况,因此它让我质疑你是如何设计出想要它的东西的。本身并没有说它的错误,它只是非常不同,并且确实倾向于违背事件“系统”的工作方式。

你真正要解决这个问题的唯一方法就是声明你自己的自定义事件处理程序委托,它返回你的布尔值,然后通过一些体操来获得你想要的任何值。 VS 2010不仅仅是随意返回一个void,而是遵守默认的EventHandler委托签名 - 它返回一个void。

如果您可以分享为什么要这样做,或许我们可以帮助改进设计,这可能会减少实现这一特定目标的需要。