C# 我可以只公开一个.NET DLL的一部分吗';通过不同的;空气污染指数;动态链接库?

C# 我可以只公开一个.NET DLL的一部分吗';通过不同的;空气污染指数;动态链接库?,c#,.net,wpf,api,dll,C#,.net,Wpf,Api,Dll,我正在设计一个WPF应用程序,它使用一个可能有40个公共类的DLL。我需要将这些公开,原因有很多,包括易于数据绑定和混淆。我希望允许其他人只使用这些类的一部分作为我的软件的API 我想我会创建一个主库(core.dll)和一个API库(coreAPI.dll),其中包含要在新项目中引用的API dll。有没有办法允许coreAPI.dll只公开core.dll中存在的几个类?这与其说是一个安全问题,不如说是我主要想简单地从VisualStudioIntelliSense中隐藏一些不需要的类 同样

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

我想我会创建一个主库(core.dll)和一个API库(coreAPI.dll),其中包含要在新项目中引用的API dll。有没有办法允许coreAPI.dll只公开core.dll中存在的几个类?这与其说是一个安全问题,不如说是我主要想简单地从VisualStudioIntelliSense中隐藏一些不需要的类


同样,我想隐藏的内部类实际上不是一个选项,因为我需要在WPF中对其中一些类进行数据绑定,因此它们必须是公共的。还有其他方法吗?

如果主要问题是Intellisense,那么将这些类移动到一个单独的名称空间中肯定会奏效


当然,您可以将这些类拆分为两个单独的程序集。您可能会遇到一些问题,即必须公开比您想要的更多的类(因为它们现在位于单独的程序集中),这可能可以使用Damien已经提到的属性来解决,如果您只想对Intellisense进行隐藏,您可以将以下属性添加到隐藏的类中:


我不知道它是否能与绑定一起工作,但您是否查看过InternalsVisibleTo?是的,起初我尝试过,但结果表明,使用InternalsVisibleTo时,模糊处理几乎是不可能的,而且它也不能与数据绑定一起工作。我希望保持我的命名空间与dll名称相同,但我可能会采纳您的建议。理想情况下,我还希望公开的类属性在Intellisense中显示为只读。
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]