以下throws'是一个方法但被视为类型'

时间:2013-04-19 15:51:55

标签: c# asp.net-mvc-3 entity-framework

我在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)抛出错误“是一种方法,但被视为一种类型”,嗯,不,它不被视为一种类型....

最近怎么回事?

3 个答案:

答案 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();
相关问题