将扩展方法分配给变量

时间:2013-04-18 09:21:21

标签: c# asp.net

我正在尝试为扩展方法分配一个变量,但是当我将鼠标悬停在该行上时会收到错误。

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 个答案:

答案 0 :(得分:2)

从错误看,ShowMessage的回复类型为void

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

您正尝试将任何类型都分配给变量。

解决方案:

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

答案 1 :(得分:2)

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

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

public static string GetMessage(this Whatever foo, string message, string type,
                                ErrorType errorType)

答案 2 :(得分:0)

此方法的返回类型为:void。您无法为变量指定类型void

答案 3 :(得分:0)

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);

的返回类型似乎为void。然后,您无法分配给本地变量(var message

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