gpt4 book ai didi

c# - 隐藏函数

转载 作者:行者123 更新时间:2023-11-30 18:49:01 25 4
gpt4 key购买 nike

我有一个类进行复杂的科学计算。它被设置为只允许用户创建一个正确实例化的案例。然而,要正确测试代码,需要直接设置内部状态变量,因为引用文档在其测试用例中提供了此数据。但是,如果操作不当,它可能会使状态无效。

所以我必须有能力,一个成员函数,从单元测试程序中设置内部变量。但我想强烈劝阻普通用户不要调用这个函数。 (是的,一个坚定的用户可以搞砸任何事情......但我不想宣传有办法做一些错误的事情。)

例如,如果能够告诉 Intellisense 不显示该函数,那就太好了。

我目前拥有的最佳解决方案是将函数命名为:DangerousSet()。

我还有哪些其他选择?

跟进

我发现 Amy B 的回答对我的情况最有用。谢谢!
Mufasa 关于使用反射的建议很棒,但(对我而言)更难实现。
Chris 关于使用装饰器的建议很好,但没有成功。
BFree对XML的建议也不错,已经在用了,但并没有真正解决问题。

最后,BillTheLizard 的建议,问题出在源文件中,这不是我能控制的。国际专家出版高技术书籍和期刊文章供他们的社区使用。他们没有解决我的特殊需求这一事实是生活中的事实。根本没有替代文件。

最佳答案

您可以使用 InternalsVisibleToAttribute将内部成员标记为对您的测试程序集可见。在这种情况下使用它似乎很闪耀,尽管它并不完全是“ friend ”。

  1. 将您的 DangerousSet 函数标记为 internal 而不是 public

  2. 在包含 DangerousSet 的项目的 Properties\AssemblyInfo.cs 中:

    [assembly:InternalsVisibleTo("YourTestAssembly")]

如果出于某种原因有两个测试程序集,则语法为:

[assembly:InternalsVisibleTo("TestAssembly1"), 
InternalsVisibleTo("TestAssembly2")]

关于c# - 隐藏函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167760/

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