【问题标题】:How a Delegate or an Event Handler can return bool type?委托或事件处理程序如何返回 bool 类型?
【发布时间】:2012-08-19 04:20:52
【问题描述】:

我正在使用 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) 返回类型错误。

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

【问题讨论】:

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


    【解决方案1】:

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

    那么您需要更改使用的委托类型...因为EventHandler&lt;TEventArgs&gt; 返回值。

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

    【讨论】:

    • 我想这样做是为了检查这个方法是否已经在数据库中添加了基本信息,并且“obj.AddBasicInfoAsync(username, fullname, gender, Encrypted_password, DOB, Email, mobile);”是否已经完美地工作了?
    • 但是您希望从哪里获得返回值?也许您需要一个 void 方法来充当事件处理程序,如果有用,它可以调用 bool 方法。
    • 我希望从 VS2010 创建的方法或事件返回布尔值。我正在上传屏幕截图,这可能会让你很好地了解我正在尝试做什么! ![在此处输入图片描述][1] [1]:i.stack.imgur.com/wzCr0.png
    【解决方案2】:

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

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

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

    【讨论】:

    • 就其性质而言,事件通常用于获取返回值确实(几乎)没有意义的情况,这怎么可能?如果在执行某些事件时我需要返回一些值怎么办?所以你不能这么说,我也不会违背规律,它只是成为我必须这样做的一个场景。您能否更友好地提供一些详细信息或指向自定义事件处理程序代表的链接????
    • 关键是您设计了一个场景,您希望从事件中返回一个值。 Jon Skeet 和我每个人都试图说明的一点是,事实上,您正在做的事情与 .NET 处理事件的方式的设计原则背道而驰。我无法向您展示自定义事件处理程序委托,因为 必须编写它们。事件不返回值的 .NET 模型提供了不返回值的 default EventHandler 委托。这就是为什么 Jon 和我都提出也许更好的架构/设计是可能的。
    • 我希望从 VS2010 创建的方法或事件返回布尔值。我正在上传屏幕截图,这可能会让你很好地了解我正在尝试做什么! ![在此处输入图片描述][1] [1]:i.stack.imgur.com/wzCr0.png
    • 我会恭敬地建议,当您向他人寻求帮助时,采取不那么好斗的态度会更合适。我当然不了解世界上所有的 .NET,但我可以识别出一个从设计方面看起来像问题的场景,这可能就是其中之一。但听起来像是愤怒、防御性的回答并不能完全鼓励其他人提供帮助。祝你的项目好运。
    • 先生...现在通过查看我上传的图片,您可能会明白我想要什么...谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多