我有一个实现网站导航的NavigationModel类。在内部有一个NavigationNode的私有实现,我希望能够在NavigationModel中声明但不能在其外部声明。我怎么做到这一点?当我执行以下操作时:
{{1}}
该物业告诉我:
可访问性不一致:属性类型 “列表”不太容易访问 属性“NavigationModel.NavigationNodes”
答案 0 :(得分:4)
引发错误是因为通过将NavigationModel
声明为public,您创建了一个用于访问NavigationModel的公共接口。此接口的一部分是公共方法或属性的签名。通过这种方式,您发布了应该是私有的类NavigationNode
- 因此错误。
为了解决这个问题,您可以创建一个仅包含要发布的NavigationNode
部分的公共接口。如果您不想发布任何内容,则界面为空。以下示例显示了基本组件:
INavigationNode
。List<INavigationNode>
类型的属性。NavigationNode
。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
{
}
}
答案 1 :(得分:0)
NavigationNode需要公开才能使其正常工作。使其公开仍然将声明保持在包含类NavigationModel内部,而NavigationModel之外的类可以引用它。