0

我试图在一个解决方案中的两个项目之间共享一个公共命名空间。这些项目是“蓝图”和“存储库”。蓝图包含整个应用程序的接口,并作为应用程序结构的参考。

在 Blueprint 项目中,我有一个带有以下声明的接口:

namespace Application.Repositories{
    public interface IRepository{
        IEntity Get(Guid id);
    }
}

在存储库项目中,我有一个类以下类:

namespace Application.Repositories{
    public class STDRepository: IRepository
    {
        STD Get(Guid id){
             return new SkankyExGirlfriendDataContext()
                           .FirstOrDefault<STD>(x=>x.DiseaseId == id);
        }
    }
}

但是,这不起作用。Repositories 项目具有对 Blueprint 项目的引用。我收到 VS 错误:“找不到类型或命名空间名称 'IRepository'(您是否缺少 using 指令或程序集引用?) - 通常,这很容易修复,但添加 using 语句没有意义因为它们具有相同的命名空间。无论如何我尝试了它,但它没有工作。引用已添加,并且没有引用该接口的代码行,两个项目都编译成功。我迷路了。我已经搜索过什么也没找到,所以我假设我正在做的事情从根本上是错误的......但我不知道它是什么。所以,我希望得到一些关于如何解决这个问题的解释或指导。我希望你们能提供帮助。

注意:我想这样做并将接口保留在同一命名空间下的原因是因为我想要一个可靠的项目来保留所有接口,以便为应用程序的完整架构提供参考。我考虑了一些变通方法,例如将所有接口放在 Blueprint.Application 命名空间而不是应用程序命名空间中。但是,这需要我在应用程序的几乎每一页上都写下 using 语句……我的手指会感到疲倦。再次感谢各位...

4

3 回答 3

1

这个有可能。

例如,mscorlib.dll 和 System.dll 是两个不同的 C# 项目,它们都在System命名空间中定义类。(除其他外)

如果Repositories项目不引用Blueprint.

于 2010-06-01T00:32:14.287 回答
1

好的 - 所以,我将 SLaks 标记为正确,因为他的回答是正确的,并且可能会成为其他任何人在未来查看此问题的解决方案。我的问题与我的解决方案中的其他 6 个项目文件有关。我卸载了它们并仅使用两个发布的实例重建了解决方案,突然我的 Intellisense 开始工作。尽管这两个项目没有错误,但其他项目中的错误导致编译出现问题。该死的...谢谢大家。

于 2010-06-01T01:10:45.240 回答
0

对于您要归档的内容,您还可以尝试将所有内容放入一个程序集中并将所有类声明为internal而不是public. 这样,使用它的程序只会看到接口。您将必须创建一组工厂类,这些类根据某些参数创建特定接口的实例。这确实是要走的路,因为小组件会导致大量开销。请参阅Microsoft 性能指南

于 2010-06-01T01:06:52.180 回答