在第三个依赖项目中隐藏命名空间

Hide namespace in 3rd dependent project

我在同一个解决方案中有 3 个项目,每个项目都依赖于之前的项目 (DB <- Provider <- WinUI)。在 DB 中,我定义了一个 Behaviour class,它将在具有 mapper Behavioud class 的 Provider 中使用,这是最后使用的通过 WinUI 项目。 (WinUI 不直接依赖于 DB)。

有没有办法在 WinUI 中隐藏数据库中的类?该项目只应使用提供程序类。

首先,将DB项目中的Behaviourclass标记为internal

其次,添加

  • 对于包含 AssemblyInfo.cs 文件的项目
    [assembly: InternalsVisibleTo("Providers")]
    
  • 对于 .Net 5+,在 csproj 文件中 ()
    <ItemGroup>
      <InternalsVisibleTo Include="Providers" />
    </ItemGroup>
    

internal 防止 class 在其他程序集中可见。 assembly 属性允许与您命名的程序集共享内部 classes。