我对InternalsVisibleTo的理解是,它主要用于单元测试。但是这意味着我的单元测试类(如果它在一个单独的项目中)需要对带有InternalsVisibleTo类的项目的引用,而且这个类还需要对单元测试类的引用,以便获取它的程序集名称,以便将其放入属性的参数中。
怎么解决这个问题-22?
发布于 2017-03-14 07:35:27
考虑以下项目结构。
您有一个名为Company.Org.PersonManager的项目,生成一个名为
Company.Org.PersonManager.dll它包含以下类声明
internal class Person
{
public string Foo();
}如果要测试Foo方法,可以在名为Company.Org.PersonManager.Test的项目中编写nunit测试。
该实现可以类似于:
[TestFixture]
public class TestPersonManager
{
[Test]
public void Test_Foo()
{
Person p = new Person();
Assert(p .... );
}
}上面的代码不会编译,因为Person类仅在程序集Company.Org.PersonManager.dll中在内部可见。
如果添加以下行,这就是InternalsVisibleTo派上用场的地方。
[assembly: InternalsVisibleTo("Company.Org.PersonManager.Test.dll")]要在项目Properties/AssemblyInfo.cs中使用Company.Org.PersonManager,您要告诉编译器,程序集Company.Org.PersonManager.Test.dll可以访问程序集Company.Org.PersonManager.dll中的内部类和方法。
这不应该导致循环引用,Company.Org.PersonManager.Test应该有对Company.Org.PersonManager的引用,但是其他引用不应该是相关的。
https://stackoverflow.com/questions/42779818
复制相似问题