我可以通过不同的“API”DLL 仅公开一个 .NET DLL 公共类的一部分吗?

问题描述 投票:0回答:2

我正在设计一个 WPF 应用程序,它使用大约有 40 个公共类的 DLL。我需要将这些公开,原因有多种,包括易于数据绑定和混淆。我希望允许其他人仅使用这些类的一部分作为我的软件的 API。

我想我应该创建主库(core.dll)和一个API库(coreAPI.dll),其中API DLL要在新项目中引用。有没有办法让 coreAPI.dll 只公开 core.dll 中存在的几个类?这并不是一个安全问题,因为我主要想简单地从 Visual Studio Intellisense 中隐藏一些不需要的类。

同样,我想要隐藏的内部类并不是真正的选择,因为我需要在 WPF 中对其中一些类进行数据绑定,为此,它们必须是公共的。还有其他方法可以做到这一点吗?

c# .net wpf visual-studio dll
2个回答
3
投票

正如 Damien 已经提到的,如果您唯一想做的就是隐藏 Intellisense,您可以将以下属性添加到您的 hidden 类中:

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]

0
投票

如果主要问题是智能感知,那么将这些类移动到单独的命名空间中肯定可以解决问题吗?

当然,您可以将类拆分为两个单独的程序集。您可能会遇到一些问题,必须公开比您想要的更多的类(因为它们现在位于单独的程序集中),这可以使用 InternalsVisibleTo 属性

解决
© www.soinside.com 2019 - 2024. All rights reserved.