48

我有一个类库,它有几个只包含内部类型的命名空间。

但是,当在应用程序项目中使用类库时,命名空间会在智能感知中显示,但它们当然是空的。在其他项目中使用智能感知时,我有什么办法可以完全隐藏命名空间?

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

或者,如果我足够关心这一点,唯一的选择是我必须将类型移动到包含公共类型的命名空间中?

4

2 回答 2

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,则不会。

于 2012-02-19T09:25:30.700 回答
7

我以前遇到过这个问题,但没有找到解决方案,只有一种解决方法,它可能适用于您的项目,也可能不适用于您的项目。您可以使用嵌套的静态类来代替定义命名空间吗?

于 2009-04-06T08:51:54.843 回答