我的interfaces子项目中有几个文件夹。我可以“看到”其中两个,但不是第三个。显然添加了引用,否则我将无法“查看”或访问子项目中的任何名称空间。
任何想法在这里可能出错?
来自项目 Project.Data 的文件 ProjectContext.cs 需要从另一个项目 Project.Interfaces 继承接口。
Project.Data 引用 Project.Interfaces 。
界面位于 Project.Interfaces \ Data \ IProjectContext.cs 中。
无论出于何种原因,数据目录在Visual Studio提供的自动完成中都不可见。我无法访问 Project.Interfaces.Data 命名空间。
来自 Project.Data 的 project.json
{
"version": "1.0.0-*",
"dependencies": {
"Project.Interfaces": "1.0.0-*",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"NETStandard.Library": "1.6.1",
"System.ComponentModel.Annotations": "4.3.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
ProjectContext.cs
namespace Project.Data
{
public class ProjectContext : DbContext
{
public ProjectContext(DbContextOptions<ProjectContext> options) : base(options)
{
Database.EnsureCreated();
}
}
}
IProjectContext.cs
namespace Project.Interfaces.Data
{
interface IProjectContext
{
}
}
答案 0 :(得分:3)
您似乎认为文件夹结构定义了命名空间。事实上它们完全无关紧要(尽管这是一个很好的惯例)。检查丢失的文件夹中的文件,并更改代码中的命名空间定义,可能您希望它与您的文件夹结构相匹配。
要寻找的另一件事是类/接口是否公开。
答案 1 :(得分:3)
c#中的默认访问修饰符为internal
。由于您的IProjectContext
界面没有修饰符,因此假设它为internal
,因此其他项目无法使用。
使界面公开,您将能够在其他项目中引用它。
namespace Project.Interfaces.Data
{
public interface IProjectContext
{
}
}
如果您希望界面因API原因而内部存在,则可以在InternalsVisibleTo
项目的AssemblyInfo.cs
文件中添加Project.Interfaces
行:
[assembly: InternalsVisibleTo("Project.Data")]