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

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

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

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

有帮助吗?

解决方案

这取决于您如何引用类库:

  • 如果您的解决方案中包含类库项目并使用项目引用,您将始终通过 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,则不会。

其他提示

我已经遇到了在此之前并没有发现任何解决方案,只有一种解决方法可能会或可能不会在您的项目工作。而不是定义一个命名空间,你可以使用一个嵌套的静态类的?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top