C# 为变量指定扩展方法

C# 为变量指定扩展方法,c#,asp.net,C#,Asp.net,我试图为扩展方法分配一个变量,但当我将鼠标悬停在该行上时,会出现错误 无法将“void”赋值给隐式类型的局部变量 我正在检查空字段并调用扩展方法,希望检查多个字段,如果它们都失败了,我希望它们出现在一个错误框中,而不是堆积如山 if (drp_SelectGroup.SelectedValue == "0") { var message = this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error); } 编辑

我试图为扩展方法分配一个变量,但当我将鼠标悬停在该行上时,会出现错误

无法将“void”赋值给隐式类型的局部变量

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

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


从错误中可以看出
ShowMessage
具有
void
返回类型

这意味着它不会返回任何东西

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

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
解决方案:


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

从错误中可以看出
ShowMessage
具有
void
返回类型

这意味着它不会返回任何东西

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

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
解决方案:


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

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

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
您可能需要将扩展方法更改为以下内容:

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

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

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
您可能需要将扩展方法更改为以下内容:

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

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

此方法的返回类型为:
void
。不能将类型
void
指定给变量

this.ShowMessage("Select an Ethnic Group", "ERROR", ErrorType.error);
返回类型似乎为
void
。然后,您不能分配给局部变量(
var message

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

返回类型似乎为
void
。然后,您不能分配给局部变量(
var message


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

扩展方法在哪里?哪个调用是对扩展方法的调用?扩展方法在哪里?哪个调用是对扩展方法的调用?当我尝试string时,它说缺少返回类型。我是否只返回page.ClientScript.RegisterStartupScript(page.GetType(),“toastr”,String.Format(“toastr.{0}('{1}','{2}');”,err,message,title),addScriptTags:true)@StudentRik:我们真的不知道你的代码要实现什么——你基本上没有给我们上下文。算出你想要退货的东西,然后退货。。。理解这是一个扩展方法的事实是不相关的。我不知道我该怎么做。你能给我指一下资源吗。@StudentRik:你会怎么做?编写一个返回值的方法对于编写任何C#代码来说都是非常基本的——如果您对C#非常陌生,以至于在这一点上陷入了困境,那么现在应该避免使用扩展方法。(作为新成员并没有什么错,但一次只做一步。)当我尝试字符串时,它会说缺少返回类型。我是否只返回page.ClientScript.RegisterStartupScript(page.GetType(),“toastr”,String.Format(“toastr.{0}('{1}','{2}');”,err,message,title),addScriptTags:true)@StudentRik:我们真的不知道你的代码要实现什么——你基本上没有给我们上下文。算出你想要退货的东西,然后退货。。。理解这是一个扩展方法的事实是不相关的。我不知道我该怎么做。你能给我指一下资源吗。@StudentRik:你会怎么做?编写一个返回值的方法对于编写任何C#代码来说都是非常基本的——如果您对C#非常陌生,以至于在这一点上陷入了困境,那么现在应该避免使用扩展方法。(做一个新手没什么错,但一步一个脚印。)