问题
.NET Framework 中是否有一种机制可以在不使用单独的项目/程序集的情况下隐藏一个自定义类型?我不是在谈论将 Type 的成员隐藏在另一种类型中的访问修饰符——我的意思是隐藏 Type 本身。
背景
我在一个 ASP.NET 网站项目中工作,团队决定不对不同的软件层使用单独的项目程序集。因此,我正在寻找一种方法,例如,我不允许其类访问同一 ASP.NET 网站项目中的其他类型的 DataAccess/ 文件夹。换句话说,我想伪造这些层,并在每一层周围都有某种安全机制,以防止它访问另一层。
更多信息和细节...
显然,没有办法使用特定于语言的 OO 关键字来强制执行此限制,因此我正在寻找其他东西,例如:可能是权限框架或代码访问机制,可能是使用元数据(如属性)的东西。甚至限制一个命名空间访问另一个命名空间的东西。我不确定它可能采取的最终形式。
如果这是 C++,我可能会使用friend
它作为解决方案,在这种情况下它不会转换为 C# internal
,尽管它们经常被比较。
我真的不在乎该解决方案是否实际上将类型彼此隐藏或只是使它们无法访问;但是我不想从所有其他类型中锁定一个类型,这是访问修饰符不是解决方案的另一个原因。运行时或设计时的答案就足够了。寻找易于实现的东西,否则不值得努力......