gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:51:30 25 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)

最佳答案

这可能是一个解决方案:

  • 将类从项目 A 移至其他项目 (B) 并将其设置为内部
  • 对不想使用 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/

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