隐藏类库中仅包含内部类型的命名空间?

发布于 2024-07-16 06:16:38 字数 258 浏览 8 评论 0原文

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

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

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

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

I have a class library that has a couple of namespaces containing only internal types.

However, when using the class library in an application project, the namespaces shows up in intellisense, but of course they are empty. Is there any way for me to hide the namespaces completely when using intellisense in other projects?

I've tried to apply EditorBrowsableAttribute to all the internal classes as well, but what I'd like to do would be to apply that to the namespace, which is of course impossible.

Or is, if I care enough about this, the only option I have to just move the types into a namespace that contains public types?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

就像说晚安 2024-07-23 06:16:38

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

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

It depends on how you're referencing your class library:

  • If you have the class library project contained within your solution and use a project reference, you'll always see that empty namespace via Intellisense.
  • If you're referencing a compiled dll of your class library, you won't see the namespace popping up in intellisense, provided it contains only internal members.

Try this:

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

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

If you reference this via a project reference, you'll see the empty namespace. If you reference a dll of it, you won't.

面如桃花 2024-07-23 06:16:38

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

I've come up against this before and found no solution, only a workaround which may or may not work in your project. Instead of defining a namespace you could use an nested static class?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文