c# - 无法从单独的程序集访问文件?

标签 c# .net

我的解决方案中有两个项目。一个代表主项目,另一个代表第一个项目的名称,但在末尾添加“.API”,充当我的接口(interface)的程序集。

由于我为特定类使用了一个接口(interface),我访问的是接口(interface)而不是实际的具体类,当我从主程序集中的文件中访问主程序集中的文件时,这会带来问题,这很好,问题来了,因为我需要在接口(interface)文件中提及它。

否则将无法访问,因为接口(interface)文件是本例中的类。

这是一个代码示例...

namespace App.Classes
{
    public class User : IUser 
    {
        public SomeType SomeType { get; set; }
    }
}

namespace App.Classes
{
    public enum SomeType
    {
        SpecialType,
        GoldType,
        SilverType,
        Other
    }
}

namespace App.API
{
    public interface IUser
    {
        public SomeType SomeType { get; set; }
    }
}

我收到的错误是找不到类型或命名空间名称“SomeType”

尝试添加时 对接口(interface)文件使用 App 我收到一条错误消息,告诉我命名空间不存在。

主程序集名称:App
API 程序集名称:App.API

最佳答案

如果我没理解错的话,

您已经从主应用程序 (App) 引用了您的 API (App.API)。

然后您将尝试在您的 API 中调用/引用 SomeType,它实际上位于 (App) 中。

基本上这(如果可以的话)被称为 Circular Reference .Net 不允许。

更进一步

The type or namespace name 'SomeType' could not be found

这个错误是完全正确的,因为没有从 App.API 项目到 App 的引用(甚至检查你的 API 项目) .我知道它不在那里,因为它无法完成,.Net 不会让你。因此 循环引用

你需要让通用的东西通用,即如果你的 API 需要知道 SomeType 它必须放在你的 API 程序集中(或者 AppApp.API 都可以引用的更常见的程序集)。

简单的解决方案是将SomeType放回App.API(项目,不仅仅是命名空间)

namespace App.API.Enums
{
    public enum SomeType
    {
        SpecialType,
        GoldType,
        SilverType,
        Other
    }
}

或者创建第三个程序集并从 AppApp.Api 项目中引用它

关于c# - 无法从单独的程序集访问文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807214/

相关文章:

c# - 对象转字符串出错

c# - 从 Windows Phone 应用程序中的图像创建 GIF

java - 比较树节点

c# - 引发类型实现接口(interface)的对象的事件

c# - 我应该在 subview 模型中存储对父 View 模型的引用吗?

c# - C#静态类需要实例化吗?

C# 正则表达式验证 "realistic"IP 值

.net - 使用 ServiceLocator Bootstrapper 在 MVVM 应用程序中注册事件处理程序的正确位置?

c# - .NET 3.5 C# 错误与 System.Timer System.ObjectDisposedException : Cannot access a disposed object

c# - WPF 子窗口 - Windows 7 任务栏