gpt4 book ai didi

c# - 组装 ... 内部和外部命名空间

转载 作者:太空狗 更新时间:2023-10-29 20:41:52 27 4
gpt4 key购买 nike

这里有一个简短的问题。我有一个程序集被一些开发人员重复使用,其中包含各种功能,但在技术上分为代表功能逻辑 block 的各种命名空间。

现在,它提供的公共(public) namespace 越少越好。基本上,用户不应该知道(目前也不知道)他们正在尝试使用的类正在使用哪个内部结构。

假设您有这个:

  • NS1

    • NS11
    • 111类
    • 112类
    • NS 扩展
      • 扩展类 1
    • NS12
  • NS2

    • ...

基本上,用户知道他们使用 FrameworkName.NS1 来实现有关 NS1 的一般功能。现在,在这个简单的例子中,我在子命名空间扩展中放置了一个包含扩展方法的类,所以基本上,如果最终用户试图使用程序集,他必须真正知道 DLL 的内部结构才能知道扩展存在(这是智能感知不会告诉你你知道的例子之一)。

所以最重要的是……现在我已经有了这个程序集,并且在内部(VS 项目)我像往常一样将项目划分为逻辑文件夹,但我不让命名空间跟随文件夹。通过这种方式,程序集被拆分成用户知道的逻辑 block ,而不必知道内部结构,也不需要知道可能存在用于扩展等的单独 namespace 。

现在,如果我能让我的代码的命名空间遵循我的文件夹结构,但在编译时以某种方式将这些子命名空间映射到主命名空间,我个人会喜欢它。

是否有可能以某种方式实现这种“重定向”?

简而言之,我希望能够在程序集外部将 NS1.NS11.Class111 公开为 NS1.Class111,同时在程序集内部仍保持适当的结构。

最佳答案

如果您需要通过不同的命名空间提供对某些内部代码的第三方访问,我会将数据访问抽象为一个单独的程序集(取决于原始程序集),或者使用 Web 服务来提供子集您希望他们访问的功能。

您可以对每个类的属性做一些事情,但我想它会很快变得非常困惑。

关于c# - 组装 ... 内部和外部命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com