0

我正在尝试将变量分配给扩展方法,但是当我将鼠标悬停在该行上时出现错误。

cannot assign 'void' to an implicitly-typed local variable

我正在检查空字段并调用我的扩展方法并想要检查多个字段,如果它们都失败了,我希望它们出现在一个错误框中而不是堆积起来。

if (drp_SelectGroup.SelectedValue == "0")
{
  var message =  this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
}

编辑*

public static void ShowMessage(this Page page, string message, string title, ErrorType err)
    {
        page.ClientScript.RegisterStartupScript(page.GetType(), "toastr",
            String.Format("toastr.{0}('{1}','{2}');", err, message, title), addScriptTags: true);
    }
4

4 回答 4

2

从错误看来,它ShowMessage有一个void返回类型。

这意味着它没有返回任何东西。

您正在尝试将无类型分配给变量。

解决方案:

更改签名ShowMessage以返回您需要返回的内容。

于 2013-04-18T09:22:53.993 回答
2

问题不在于它是一个扩展方法——而是扩展方法有一个void返回类型。大概该方法显示消息,而不仅仅是创建它。如果您尝试调用任何其他 void 方法并将结果分配给变量,您将得到完全相同的错误消息。

您可能需要将扩展​​方法更改为以下内容:

public static string GetMessage(this Whatever foo, string message, string type,
                                ErrorType errorType)
于 2013-04-18T09:22:58.323 回答
0
this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);

似乎有一个返回类型void。然后您不能分配给局部变量 ( var message)

您可以更改返回类型,Show.Message()这应该适合您。

于 2013-04-18T09:24:59.220 回答
0

此方法的返回类型为:void. 您不能将类型分配给void变量。

于 2013-04-18T09:23:02.393 回答