加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何阻止第三方调用某些方法?

发布时间:2020-12-15 18:36:04 所属栏目:百科 来源:网络整理
导读:我有一个正在开发的程序集,用于创建围绕某些潜在敏感功能的外观,我希望允许第三方调用其中包含的某些方法,而不是其他方法. 如果他们可以访问整个DLL,我怎么能阻止第三方调用未经授权的方法(我不关心他们看到代码,只是执行它)? 这必须与.net紧凑框架兼容,所
我有一个正在开发的程序集,用于创建围绕某些潜在敏感功能的外观,我希望允许第三方调用其中包含的某些方法,而不是其他方法.

如果他们可以访问整个DLL,我怎么能阻止第三方调用未经授权的方法(我不关心他们看到代码,只是执行它)?

这必须与.net紧凑框架兼容,所以不幸的是使用StrongNameIdentityPermission属性是不可能的.

解决方法

我认为你应该发布两个Facade实现,一个用于暴露所有方法的“内部”消费者,另一个暴露所有方法的外部实现.您可以通过拥有两个单独的构建过程来实现此目的,同时只维护一个代码库.我们想到的一种技术是使用 compiler directives从外部构建中排除方法,或者如果其他公共方法需要,则将其标记为内部方法.如果您运送带有内部修饰符的敏感方法,您可能还需要实现模糊处理.

编辑

也许它会更清晰,而不是围绕每个方法使用部分类的指令,为敏感方法定义一个部分类,并将整个类实现放在一个指令中.

public partial class MyClass
    {
        public void NonSensitive(){}
    }

    #if INTERNAL_BUILD
    public partial class MyClass
    {
        public void Sensitive(){}
    }
    #endif

您可以将此部分类放在相同或单独的文件中,这可能是一个很好的分离级别,因为您可以预先添加文件名x_Sensitive.cs或类似文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读