【问题标题】:Keeping namespaces for internal classes from appearing in intellisense防止内部类的命名空间出现在智能感知中
【发布时间】:2011-04-19 13:45:23
【问题描述】:

我正在编写一个包含纯内部成员的类的类库。我将这些划分为名称空间。这些内部类中没有公共或受保护的成员。
问题是,当我在客户端应用程序中使用这个类库时,这些命名空间会出现在智能感知上。当然,它们不包含可访问的项目,所以它就结束了,但我担心这可能会使图书馆的用户感到困惑
示例:

命名空间 mynamespace.yournamespace { 内部类废话 { 内部无效函数1(){}; 内部无效函数2(){}; } }

在外部使用时,intellisense 将显示:mynamespace.yournamespace 但不提供任何成员(因为它们是内部的)。
那么问题来了,有没有办法阻止那些内部类出现在智能感知中,或者我只是什么都不担心?或者......如果它是内部的,它甚至需要自己的命名空间吗?
任何帮助表示赞赏

(在How can I prevent a public class that provides extension methods from appearing in Intellisense? 有一个类似的帖子,但没有定论。)

【问题讨论】:

  • 没有什么“需要”命名空间。您可以完全省略命名空间,这会将内容放入没有名称的“默认”命名空间中。因此,内部类是否需要命名空间是最佳实践的问题 - 该语言当然允许您不需要命名空间。
  • 感谢您的意见。我想这也是(隐含的)问题的一部分......也许只是将所有这些东西转储到根或“空白”命名空间是最好的方法

标签: c# namespaces usability class-library


【解决方案1】:

不,我认为没有办法。

根据错误

错误 1 ​​命名空间声明不能有修饰符或属性

我不明白您如何指定应隐藏命名空间。

可能已经完成的唯一(?)其他方式是在 Intellisense 设置中使用包含/排除列表,但它们不存在。

【讨论】:

    【解决方案2】:

    您可以尝试EditorBrowsableAttribute - 它被记录为隐藏在不同程序集中定义的类的成员,但如果它是同一个程序集则保持可见。听起来很适合 internal - 虽然我自己没有尝试过。

    我猜它在您的链接问题中不起作用,因为它仅适用于属性或方法:“指定属性或方法可在编辑器中查看。”

    【讨论】:

    • 我试了一下,但它不会编译:错误命名空间声明不能有修饰符或属性
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 2011-04-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多