当前位置: 首页 > 知识库问答 >
问题:

使用内部类型(C#)声明公共类方法时出现可访问性不一致错误?

徐子石
2023-03-14

编辑:我做了乔恩斯基特建议的改变,然后问题就消失了。我陷入这个问题是因为我习惯默认声明我的类为公共的。我是为其他正在做同样事情的人指出这一点。

// The internal class.
internal class JsonPetShelters
{

    [JsonProperty("@encoding")]
    public string Encoding { get; set; }

    [JsonProperty("@version")]
    public string Version { get; set; }

    [JsonProperty("petfinder")]
    public Petfinder Petfinder { get; set; }
}

// This method gets the inconsistent accessibility error since
//   JsonPetShelters is an internal class.
public JsonPetShelters GetShelters()
{
    // For example purposes only
    return null;
}

共有1个答案

甄阿苏
2023-03-14

解决这种情况最好的办法是什么?

您需要将jsonPetShelters设置为公共的,或者将getShelters()设置为内部的。

所以您希望能够从不同的程序集中调用此方法?如果是这样的话,在不理解返回类型的情况下,您将如何期望调用方使用它呢?如果不是,为什么方法是公开的?

internal JsonPetShelters GetShelters()
{ 
    ...
}
 类似资料:
  • 问题内容: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为public或protected或package- private确实没有区别,对吗?那么我应该使用哪个,或者什么时候该使用呢?我有点困惑。 问题答案: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为p

  • 问题内容: 尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。 问题答案: 我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它。 如果变量 有效地为final ,则Ja

  • 问题内容: 为什么我们不能对Java类的方法内部声明的变量使用访问说明符? 问题答案: 因为这没有意义。方法中声明的变量是该方法的局部变量。即它们不能在方法之外访问。修改变量的声明将实现什么?

  • 问题内容: 在Java中,是否可以使用JDK库发现在另一个类中实现的私有类?还是我需要使用asm之类的东西? 问题答案: 就是答案。

  • 我确实读过一些讨论内部类的主题,我的印象是内部类可以访问封闭类的变量和方法。下面我有一个外部类和一个内部类,在测试类中我创建一个外部类的实例,然后从它创建一个内部类的实例。但是,我无法通过内部类引用访问字符串变量a。帮忙?