【问题标题】:Error CS0122: 'XXX' is inaccessible due to its protection level (CS0122) (tests) [duplicate]错误 CS0122:“XXX”由于其保护级别(CS0122)(测试)而无法访问[重复]
【发布时间】:2019-01-31 21:56:14
【问题描述】:

这是我的项目。我想在program.cs文件中调用delete_created_pa​​ge文件代码,但是我有一些错误。

附上我的项目图片。 https://plus.google.com/u/0/photos/photo/103928744837695537992/6652781093994177394

'DeleteCreatedPage.MainDeletePage()' 由于其保护级别而无法访问

请帮帮我。我是 C# 的初学者,我正在使用 monodevelop 和使用 Ubuntu 18.04 操作系统

这是 Delete_created_pa​​ge.cs 文件

namespace DeletePage
{
    public class DeleteCreatedPage
    {
        static void MainDeletePage()
        {
            //Initialize TestName and ToolName. 
            string testName = "delete_page";
            string toolName = "editor";
            // Calling necessary classes
       }
    }
}

这是 Program.cs 文件

namespace ProgramList
{
    public class MainClass
    {
        static void Main(string[] args)
        {
            DeletePage.DeleteCreatedPage del = new DeletePage.DeleteCreatedPage();
            del.MainDeletePage();
        }
    }
}

【问题讨论】:

  • static void MainDeletePage()添加一个公共访问器使其成为public static void MainDeletePage()

标签: c# class


【解决方案1】:

这里有几个问题叠加在一起。

第一个是该方法被设置为最严格的限制,如果没有明确定义,例如internal,或private。你希望它是公开的,所以一定要包括它。

第二个问题是static,这意味着它不是通过实例化对象访问的,而是直接通过类调用的,就像DeleteCreatedPage.MainDeletePage()一样。如果您希望该方法与特定 DeleteCreatedPage 对象的类成员一起使用,请删除 static。如果您希望该方法对每个对象使用相同的值,请将 static 保留在那里。

所以你有两个选项来解决这个特定的问题。

要么把方法定义改成这个

public void MainDeletePage()

或者改变你调用它的方式(同时仍然将public添加到方法定义中)

DeleteCreatedPage.MainDeletePage()

【讨论】:

  • 您仍然需要使用第二种解决方案公开静态方法。
  • 这是真的,我会编辑清楚
  • 我改变了,你问了,命名空间 DeletePage { public class DeleteCreatedPage { public void MainDeletePage() { 并在程序文件中。 DeleteCreatedPage.MainDeletePage();但是我还有一个错误..请参阅附加文件。 plus.google.com/u/0/photos/photo/103928744837695537992/…
  • 现在它工作了,当我写这篇文章的时候。 public void MainDeletePage() 并在 program.cs 文件中调用它。 DeletePage.DeleteCreatedPage del = new DeleteCreatedPage(); del.MainDeletePage();
【解决方案2】:

这是因为 MainPageDelete 不是公开的,你需要这样写。类成员的默认可访问性修饰符是私有的,因此无法在类外部访问。

public static void MainDeletePage()
    {
        //Initialize TestName and ToolName. 
        string testName = "delete_page";
        string toolName = "editor";
        // Calling necessary classes
   }

【讨论】:

  • 不,这对我没有帮助。 :(
  • 嗯,这正是那个错误的意思。
  • 我的文件 /delete_created_pa​​ge/ 和 program.cs 文件是不同的文件夹,当我在属性文件夹中调用一个类时,它的工作正常。但我的文件在 properties/content_editor/editor 文件夹中
【解决方案3】:

如果您尝试调用MainDeletePage,则必须将其标记为public,以便其他类可以看到它。所以,不要尝试static void MainDeletePage(),而是尝试public static void MainDeletePage()。默认情况下,如果 C# 没有明确定义其范围,则该方法默认为私有范围。私有方法只能由定义它们的类访问。

【讨论】:

【解决方案4】:

现在它可以工作了,当我在 delete_created_pa​​ge 文件中写这个时。

public void MainDeletePage()

并且在 program.cs 文件中调用了这个方法。

DeletePage.DeleteCreatedPage del = new DeleteCreatedPage();    del.MainDeletePage(); 

【讨论】:

  • 非常感谢大家!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 2014-08-15
  • 2021-10-22
相关资源
最近更新 更多