我在ASP中遇到的最令人困惑的错误。我之前已经完成了这样的方法调用,并且在我的代码的其他位置没有问题。
首先是班级:
namespace LocApp.Helpers.Classes.LocationHelper
{
public class QueryHelper
{
private LocAppContext db = new LocAppContext();
public static IEnumerable<Service> getAllService()
{
using (var db = new LocAppContext())
{
var service = db.Locations.Include(s => s.LocationAssignment);
var serv = (from s in db.Services
where s.active == true
select s).ToList();
return serv;
}
}
}
}
很容易理解发生了什么。所以我们调用方法:
IEnumerable<LocApp.Models.Service> Service = new LocApp.Helpers.Classes.LocationHelper.QueryHelper.getAllService(Model.id);
getAllServices(Model.id)
抛出错误“是一种方法,但被视为一种类型”,嗯,不,它不被视为一种类型....
最近怎么回事?
答案 0 :(得分:5)
正如错误消息所说的那样。 getAllService()
是一种方法:
public static IEnumerable<Service> getAllService()
但是你试图使用它,好像它是一个带有构造函数的类型:
Service = new LocApp.Helpers.Classes.LocationHelper.QueryHelper.getAllService(...)
new
部分是错误的。你不想调用构造函数,你只想调用一个方法。这是一个静态方法,因此您不需要实例 - 您可以使用:
Service = LocApp.Helpers.Classes.LocationHelper.QueryHelper.getAllService(...)
请注意,如果您有适当的using
指令,请遵循.NET命名约定并注意单数/复数名称,您的代码将更容易理解:
var services = QueryHelper.GetAllServices(...);
答案 1 :(得分:2)
你不是简单的意思是:
IEnumerable<LocApp.Models.Service> Service = LocApp.Helpers.Classes.LocationHelper.QueryHelper.getAllService();
基本上摆脱了new
位,并且该方法也没有采用任何参数 - 我假设你在删除new
位后遇到了这个问题。< / p>
答案 2 :(得分:1)
你的getAllService方法不带任何参数,所以你应该不用它来调用它。它也是一种静态方法,因此请勿使用new
关键字:
IEnumerable<LocApp.Models.Service> Service = LocApp.Helpers.Classes.LocationHelper.QueryHelper.getAllService();