保持内部类的命名空间不出现在Intellisense中

3
我正在编写一个类库,其中包含仅具有内部成员的类。我已将它们分成不同的命名空间。这些内部类中没有公共或受保护的成员。
问题是,当我在客户端应用程序中使用这个类库时,这些命名空间会显示在智能感知中。当然,它们不包含任何可访问的项,因此就结束了,但我担心这可能会使库的用户感到困惑。
例如:

    namespace mynamespace.yournamespace  
    {  
        internal class blah  
        {  
            internal void function1(){};  
            internal void function2(){};  
        }  
    }  

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

(有一个类似的帖子:如何防止提供扩展方法的公共类出现在Intellisense中?,但是没有得出结论。)


没有什么东西“需要”命名空间。您可以完全省略命名空间,这将把事物放入没有名称的“默认”命名空间中。因此,内部类是否需要命名空间是最佳实践的问题 - 语言肯定允许您不使用命名空间。 - Roman Starkov
感谢您的输入。我想这也(隐含地)是问题的一部分……也许将所有这些东西倾泻到根命名空间或“空白”命名空间中是最好的方式。 - rigamonk
3个回答

1
你可以尝试使用EditorBrowsableAttribute - 它被记录为隐藏在不同程序集中定义的类的成员,但如果是相同程序集,则保持可见。听起来非常适合internal - 尽管我自己没有尝试过。
我猜它在你链接的问题中没有起作用,因为它仅适用于属性或方法:“指定属性或方法在编辑器中可查看”。

我尝试了一下,但它无法编译:错误命名空间声明不能有修饰符或属性。 - rigamonk

1

不,我认为没有办法。

根据错误信息

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

我不知道你怎么能指定一个命名空间应该被隐藏。

唯一的(?)其他可能是在智能感知设置中使用包含/排除列表,但它们不存在。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接