0

我正在使用 Web 服务来调用我的方法,我的那个方法返回一个布尔值。这是我在 cs 文件中的代码。

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

现在的问题是VS2010创建的这个“ obj_AddBasicInfoCompleted ”方法默认返回void类型。我想在这个地方生成一个布尔类型的方法。当我将方法类型通过 void 更改为 Boolean 或 bool 时,VS2010 在上面提到的行中出现错误,说“ bool obj_AddBasicInfoCompleted(object sender, GBService.AddBasicInfoCompletedEventArgs e) 返回类型错误。

我不知道该怎么做。请帮我谢谢和问候。

4

2 回答 2

2

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

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

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

于 2012-08-18T20:01:54.850 回答
0

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

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

如果您可以分享您想要这样做的原因,也许我们可以通过稍微改进的设计提供帮助,这可能会减轻实现这一特定目标的需要。

于 2012-08-18T20:20:52.657 回答