【发布时间】:2012-02-15 14:27:08
【问题描述】:
我有一个正在开发的程序集,用于围绕一些潜在的敏感功能创建一个外观,我希望允许第三方调用其中包含的一些方法,但不能调用其他方法。
如果第三方可以访问整个 DLL,我如何防止他们调用未经授权的方法(我不担心他们会看到代码,只是执行它)?
这必须与 .net 紧凑框架兼容,因此很遗憾,无法使用 StrongNameIdentityPermission 属性。
【问题讨论】:
-
你能不能把敏感方法放在内部? (诚然,这并不能阻止反思……但那是另一回事。)
-
我一定是遗漏了一些东西,你想阻止调用 Facade API 的公共成员还是底层 DLL 的公共成员?
-
宏伟计划是使用内部程序集将所有逻辑封装在一个地方——我们需要调用我们不希望第三方调用的方法。痛苦的替代方案是另一个带有精简方法子集的程序集,但这是一个令人生畏的想法。
-
@Jon 我也在想同样的事情,加上混淆。
-
@AntSwift:您可以在自己组织的程序集中使用 InternalsVisibleTo 吗? (请注意,委托到完整版本的精简版本将允许使用更细粒度的方法。然后“LibraryForInternalUse”将授予对“LibraryForThirdPartyUse”内部方法的访问权限,后者将公开委托一些方法。)
标签: c# .net compact-framework encapsulation