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

时间:2018-04-12 23:23:04

标签: c# .net

我的解决方案中有两个项目。一个代表主项目,另一个代表第一个项目的名称,但最后添加了“.API”,它充当我的界面的程序集。

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

否则它将无法访问,因为在此示例中接口文件是我们的类。

这是一个代码示例......

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; }
    }
}

我收到的错误是the type or namespace name 'SomeType' could not be found

尝试添加时 using App到接口文件我收到一个错误,告诉我命名空间不存在。

主要装配名称:App
API程序集名称:App.API

1 个答案:

答案 0 :(得分:2)

如果我理解正确的话,

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

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

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

更多

  

类型或命名空间名称' SomeType'无法找到

此错误完全合适,因为App.API项目中没有引用(甚至检查 API 项目)App。我知道它不存在因为它无法完成,.Net不会让你。 Ergo 循环参考

您需要使常见的事情变得常见,即如果您的 API 需要知道SomeType它必须放在您的 API 程序集中(或者AppApp.API都可以参考的更常见的汇编。

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

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

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