gpt4 book ai didi

c# - 私有(private)类的公共(public)属性

转载 作者:行者123 更新时间:2023-11-30 20:28:23 25 4
gpt4 key购买 nike

我有一个实现站点导航的 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)方法或属性的签名。到那时,您将发布类 NavigationNode那应该是私有(private)的-因此是错误的。

为了解决这个问题,您可以创建一个只包含 NavigationNode 部分的公共(public)接口(interface)。您要发布的内容。如果您不想发布任何内容,则界面为空。以下示例显示了基本组件:

  • 公共(public)接口(interface) INavigationNode .
  • 类型属性 List<INavigationNode> .
  • 私有(private)课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)类的公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47637803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com