说我有四个项目。 DataRepositories,DataRepositoryInterfaces,SetupInject,WebAPI。我希望WebAPI只能直接引用其中两个项目。基本上使WebAPI对我的存储库接口的具体实现一无所知。
要做到这一点,我已经做到了这一点,因此SetupInjections的主要目的是定义将要注入的具体类型。但是,当我引用InjectionSetup项目时,我也会在WebAPI项目中获得所有依赖项。
虽然我从未引用直接定义具体类的项目,但我仍然可以使用它们。 主要目标是限制开发人员创建类的实例在这个项目中。
我记得在以前版本的.NET中可以做这样的事情。现在有办法吗?
1)我试图建议的是什么?
2)可以用.Net Core完成吗?
3)为什么可以在以前的版本中完成。
答案 0 :(得分:1)
我相信你可以使用朋友程序集来实现这一点,https://msdn.microsoft.com/en-us/library/mt632254.aspx我经常在需要访问定义为内部类的单元测试项目中使用它。
在你的SUT中 使用System.Runtime.CompilerServices; 使用System;
[assembly: InternalsVisibleTo("AssemblyB")]
// The class is internal by default.
class FriendClass
{
public void Test()
{
Console.WriteLine("Sample Class");
}
}
在你的Unit / Int测试中
// Public class that has an internal method.
public class ClassWithFriendMethod
{
internal void Test()
{
Console.WriteLine((new FriendClass).Test);
}
}
此处有更多详情,https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute(v=vs.110).aspx您还可以添加其他代码签名以进一步限制它。