Ant*_*ift 7 .net c# encapsulation compact-framework
我有一个正在开发的程序集,用于创建围绕某些潜在敏感功能的外观,我希望允许第三方调用其中包含的某些方法,而不是其他方法.
如果他们可以访问整个DLL,我怎么能阻止第三方调用未经授权的方法(我不关心他们看到代码,只是执行它)?
这必须与.net紧凑框架兼容,所以不幸的是使用StrongNameIdentityPermission属性是不可能的.
我认为您应该提供两个 Facade 实现,一个用于公开所有方法的“内部”使用者,另一个仅公开子集的外部实现。您可以通过两个单独的构建过程来实现这一目标,同时仅维护一个代码库。我想到的一种技术是使用编译器指令从外部构建中排除某个方法,或者如果其他公共方法需要该方法,则将其标记为内部方法。如果您确实使用内部修饰符传递敏感方法,您可能还需要实现混淆。
编辑
也许它会更干净,而不是在每个方法周围使用指令来使用分部类,为敏感方法定义一个分部类并将整个类实现放在指令中。
public partial class MyClass
{
public void NonSensitive(){}
}
#if INTERNAL_BUILD
public partial class MyClass
{
public void Sensitive(){}
}
#endif
Run Code Online (Sandbox Code Playgroud)
您可以将此部分类放在同一个文件或单独的文件中,这可能是一个很好的分离级别,因为您可以在文件名 x_Sensitive.cs 或类似名称的前面加上前缀。
| 归档时间: |
|
| 查看次数: |
906 次 |
| 最近记录: |