-
Notifications
You must be signed in to change notification settings - Fork 22
C# 友元程序集
L edited this page Mar 14, 2023
·
2 revisions
友元程序集是可以访问其他程序集的内部 (C#) 或友元 (Visual Basic) 类型和成员的程序集。 如果将一个程序集标识为友元程序集,则无需再将类型和成员标记为公共,其他程序集就能访问它们。这在我们进行测试时十分实用。
这里我们使用单元测试项目的代码,在UnitTest.ClassLibrary
中新增InternalTestService
类,并允许XUnit.Coverlet.Collector
项目访问它。
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("XUnit.Coverlet.Collector")]
namespace UnitTest.ClassLibrary
{
internal class InternalTestService
{
internal int Add(int number1, int number2)
{
return number1 + number2;
}
}
}
注意[assembly: InternalsVisibleTo("XUnit.Coverlet.Collector")]
需要添加到除了使用条款和外部声明以外的所有元素之上,否则会提示报错:
Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations.
之后,XUnit.Coverlet.Collector
就可以正常使用InternalTestService
了。
public class InternalTestServiceUnitTest
{
[Fact]
public void Add()
{
InternalTestService internalTestService = new InternalTestService();
internalTestService.Add(1, 2).ShouldBe(3);
}
}