我正在尝试为扩展方法分配一个变量,但是当我将鼠标悬停在该行上时会收到错误。
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);
}
答案 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()
的返回类型,这应该适合您。