我该怎么做才能访问我自己的公共方法?

时间:2012-04-09 20:04:29

标签: c# .net winforms

我在项目中创建了名为Classes,Forms和Models的文件夹。

假设我的项目名为ABC,因此文件夹层次结构为:

ABC
    Classes
    Forms
    Models

在\ Models \中,我有一个名为ApplicationModel.cs的类,它包含一个名为GetApplications()的公共方法。

然而,当我从同一个ABC项目的其他地方调用该方法时,我得到“在当前上下文中不存在名称'GetApplications'”

我添加了:

using ABC.Models;

到调用类,但没有区别。我右键单击GetApplications()以希望在那里看到“Resolve”,但是没有去。

我该怎样做才能访问自己的公共方法?

4 个答案:

答案 0 :(得分:5)

查看GetApplications()的定义和试图调用它的代码会很有帮助,但我认为它是staticApplicationModel类的实例方法。在任何一种情况下,您可能已使用using语句使代码知道ApplicationModel类的命名空间,但必须在类或类的实例上调用该方法,如下所示:

如果GetApplications是静态方法,

var applications = ApplicationModel.GetApplications();

如果是实例方法:

var appModel = new ApplicationModel(); // or, retrieve the instance from elsewhere...

var applications = appModel.GetApplications();

无论如何,您必须引用包含GetApplications的类才能调用它。如果这对您没有帮助您解决问题,请编辑您的问题以包含方法的定义和调用代码。

答案 1 :(得分:1)

听起来你正在使用静态功能。你忘了静态关键字吗?

静态函数从类中“运行”,而不是对象:

public static string[] GetApplications()

答案 2 :(得分:1)

如果没有关于如何调用该方法的代码,很难给出明确的建议。我可以想到两种可能的方式:

  • 您是要尝试通过ApplicationModel ApplicationModel.GetApplications())调用该方法,在这种情况下,您需要声明方法static
  • 或者您需要在对象上调用该方法,但是您正在使用该类型 - 在这种情况下声明/创建类型为ApplicationModel的对象并在该对象上调用该方法; (例如ApplicationModel model = new ApplicationModel(); model.GetApplications();

答案 3 :(得分:1)

看起来这个班级没有被标记为公开。

你的课应该是

   namespace ABC 
  {
    namespace Models
    {
        public class ApplicationModel  //class needs to be public is accessed outside the namespace
        {

        }
    }
  }