gpt4 book ai didi

c# - 将代码重构为辅助类以避免重复,但同时又不影响安全性

转载 作者:行者123 更新时间:2023-12-02 04:52:39 24 4
gpt4 key购买 nike

与许多人一样,我有一个包含许多项目的 .NET 解决方案。

问题是这样的:

我在我的项目中重复使用了一些代码行。这是一种复制粘贴,我真的很讨厌这样......

我的想法是将所有这些代码移到一个单独的帮助程序类中,但以下问题阻碍了这个想法:

安全方面 --> 当我将这段代码移出我的项目时,这意味着仍然有人可以访问它。如果它在我的项目中,我可以通过将相关函数设为“私有(private)”来为其提供安全性。

那么,问题是如何避免代码重复,同时安全地执行代码

一些代码来解释我的担忧:

project A (of Solution S)

private Foo SomeSecureCode(IMyInterface interfaceObject)
{
//Same some lines of code
}

project B (of Solution S)

private Foo SomeSecureCode(IMyInterface interfaceObject)
{
//Same some lines of code as above
}

相反,将此函数移动到辅助类中,但如何安全地进行呢?

(次要细节:我在 VS 2010 中使用 .NET 版本 4)

最佳答案

这可能是一个解决方案:

  • 将类(class)从项目 A 移至另一个项目 (B) 并将类(class)设为内部
  • 对不想使用sn.exe类的项目进行签名,在项目属性中对项目进行签名。
  • 在项目 B 中,将其添加到项目 B 的 Properties 文件夹下的 AssemblyInfo。

    [assembly: InternalsVisibleTo("Full.Assembly.Name.Here, PublicKey="在此处剪切并粘贴项目 A 的公钥>")]

现在只能在项目A和B中使用。

签署项目:

  • 运行 sn.exe
  • 调用sn.exe sn.key的结果
  • 将 sn.key 添加到您的项目
  • 打开您要签名的项目的属性 (Alt+Enter)
  • 转到“签名”标签
  • 选中“签署程序集”复选框
  • 在组合框中选择强名称键
  • 编译项​​目

现在项目已签名,您可以通过将 InternalsVisibleTo 属性添加到具有内部类的项目的 AssemblyInfo 来使内部结构在其他项目中可见。

关于c# - 将代码重构为辅助类以避免重复,但同时又不影响安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com