我的解决方案中有两个项目。一个代表主项目,另一个代表第一个项目的名称,但最后添加了“.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
答案 0 :(得分:2)
如果我理解正确的话,
您已从主应用(App.API
)引用了您的API(App
)。
然后,您尝试在 API 中调用/引用SomeType
,其实际位于(App
)。
基本上这个(如果可以的话)被称为Circular Reference,其中 Net 不允许。
更多
类型或命名空间名称' SomeType'无法找到
此错误完全合适,因为App.API
项目中没有引用(甚至检查 API 项目)App
。我知道它不存在因为它无法完成,.Net不会让你。 Ergo 循环参考
您需要使常见的事情变得常见,即如果您的 API 需要知道SomeType
它必须放在您的 API 程序集中(或者App
和App.API
都可以参考的更常见的汇编。
简单的解决方案是将SomeType
放回App.API
(项目,而不仅仅是命名空间)
namespace App.API.Enums
{
public enum SomeType
{
SpecialType,
GoldType,
SilverType,
Other
}
}
或者创建第3个程序集并从App
和App.Api
项目中引用它