我有一个实现站点导航的 NavigationModel 类。在内部有一个 NavigationNode 的私有(private)实现,我希望能够在 NavigationModel 内声明它,但不能在其外部声明。我将如何实现这个目标?当我执行以下操作时:
public class NavigationModel
{
public List<NavigationNode> NavigationNodes { get; set; }
public NavigationModel()
{
}
private class NavigationNode
{
}
}
属性告诉我:
Inconsistent accessibility: property type 'List' is less accessible than property 'NavigationModel.NavigationNodes'
最佳答案
引发错误的原因是声明 NavigationModel
作为 public,您创建一个用于访问 NavigationModel 的公共(public)接口(interface)。该接口(interface)的一部分是公共(public)方法或属性的签名。这样,您就可以发布类(class) NavigationNode
这应该是私有(private)的 - 因此会出现错误。
为了解决这个问题,您可以创建一个仅包含 NavigationNode
部分的公共(public)接口(interface)。您想要发布的内容。如果您不想发布任何内容,则该界面为空。以下示例显示了基本组件:
- 公共(public)界面
INavigationNode
. - 属性类型
List<INavigationNode>
. - 私有(private)类(class)
NavigationNode
实现该接口(interface)。
public interface INavigationNode
{
// Add parts of NavigationNode that you want to publish
}
public class NavigationModel
{
public List<INavigationNode> NavigationNodes { get; set; }
public NavigationModel()
{
}
private class NavigationNode : INavigationNode
{
}
}
关于c# - 私有(private)类(Class)的公共(public)属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47637803/