隐藏名称空间只包含类库中的内部类型?

时间:2009-04-06 08:47:37

标签: c# namespaces intellisense hide internal

我有一个类库,其中有几个名称空间只包含内部类型。

但是,在应用程序项目中使用类库时,名称空间显示在intellisense中,但当然它们是空的。在其他项目中使用intellisense时,有什么方法可以完全隐藏名称空间吗?

我也尝试将EditorBrowsableAttribute应用于所有内部类,但我想做的是将其应用于命名空间,这当然是不可能的。

或者,如果我对此有足够的关注,我必须将这些类型移动到包含公共类型的命名空间中吗?

2 个答案:

答案 0 :(得分:51)

这取决于您引用类库的方式:

  • 如果您的解决方案中包含类库项目并使用项目引用,那么您将始终通过Intellisense看到该空命名空间。
  • 如果您引用了类库的已编译dll,那么只要它只包含内部成员,您就不会在智能感知中弹出命名空间。

试试这个:

namespace ClassLibrary1
{
    namespace Internal
    {
        internal class InternalClass
        {
            public int internalStuff { get; set; }
        }
    }

    namespace Public
    {
        public class PublicClass
        {
            public int publicStuff { get; set; }
        }
    }
}

如果您通过项目引用引用它,您将看到空命名空间。如果你引用它的dll,你就不会。

答案 1 :(得分:7)

我之前遇到过这种情况并没有找到任何解决方案,只有在您的项目中可能有效或可能无效的解决方法。您可以使用嵌套的静态类而不是定义命名空间吗?