我正在尝试创建REST API库。我正在寻找一种方法来公开一种方法,在这种情况下,一种方法用于删除我用来测试的对象,只用于我的单元测试。
基本上这只是在每次测试后进行清理。将删除方法暴露给我的任何客户端也没有任何意义,实际上是危险的(删除应该是手动的)。
我找到了
[assembly: InternalsVisibleTo("FunctionalTests")]
但它似乎不会影响方法的可见性。有任何想法吗?我找不到解决这个具体问题的任何其他问题。
谢谢!
编辑1: 有问题的方法已标记为内部。该类是公共的,并且具有不包含相关方法的公共接口。
public class Access: IAccess, IDisposable
其中包含方法:
internal void DeleteIssue(string issueKey)
然而,无法通过调用
来访问它AccessInstance.DeleteIssue(TestIssueKey);
它返回一个错误“Access不包含'DeleteIssue'的定义,接受第一个类型'Access'的参数可以找到(你是否缺少using指令或程序集引用?)”我在同一个命名空间
答案 0 :(得分:2)
确保您要使用的方法被声明为内部 - 即使使用InternalsVisibleTo,私有方法也不会暴露在程序集之外:
来自MSDN
通常,具有内部范围的类型和成员(在C#中)和朋友 范围(在Visual Basic中)仅在它们所在的程序集中可见 定义。 InternalsVisibleToAttribute属性也使它们成为可能 对指定程序集中的类型可见,称为a 朋友集会。
答案 1 :(得分:0)
[assembly: InternalsVisibleTo("FunctionalTests")]
应该在AssemblyInfo.cs中声明才能工作。