2

我有一个简单的界面:

public interface IVisitorsLogController  
{
    List<VisitorsLog> GetVisitorsLog();
    int GetUniqueSubscribersCount();
    int GetVisitorsCount();
    string GetVisitorsSummary();
}

VisitorLogController 类实现了这个接口。

从控制台应用程序或 TestFixture - 没问题 - 控制台/测试夹具完美编译。

但是,来自同一解决方案中的 Asp.Net 网站(不是应用程序),后面的代码中有此代码

private IVisitorsLogController ctl;

protected int GetUniqueMembersCount()
{
    ctl = new VisitorsLogController();
    return ctl.GetUniqueSubscribersCount();        
}

编译器抛出此异常:

错误 1“WebSiteBusinessRules.Interfaces.IVisitorsLogController”不包含“GetUniqueSubscribersCount”的定义,并且没有扩展方法“GetUniqueSubscribersCount”接受类型为“WebSiteBusinessRules.Interfaces.IVisitorsLogController”的第一个参数(您是否缺少 using 指令或装配参考?)

但是对于同一文件中的此代码:

  protected static int GetVisitorsCount()
{
    return VisitorsLogController.Instance.GetVisitorsCount(DateTime.Today);
}

编译器编译这些行而不抱怨。事实上,如果我在接口中添加任何新内容,编译器现在会在尝试编译 asp.net 页面时抱怨。

不能缺少 using 指令或程序集引用,否则这两种方法都会失败。

这让我发疯!

请问有什么想法吗?

谢谢,

杰里米

4

4 回答 4

1

出于兴趣,您可以编译以下行:

ctl = VisitorsLogController.Instance;

? 我只是想知道您是否以某种方式获得了两个名称相同的接口。

当您键入ctl.并按Ctrl-时,Intellisense 会提示您什么Space

于 2008-10-21T18:15:31.527 回答
0

我将首先检查所涉及的每个文件的名称空间,并确保您没有冲突或您不期望的名称空间。

于 2008-10-21T17:58:40.157 回答
0

另一个重要的代码似乎是访客日志控制器,不是吗?看起来访客日志控制器正在实现一个不同的IVictorsLogController 接口。

我认为,右键单击和 GoTo Definition 应该可以解决问题。

于 2008-10-21T18:42:24.407 回答
0

该解决方案包含网站和三个类项目(数据层、服务层和核心服务)。它们作为项目作为对网站的引用添加。我曾经为发布编译过解决方案 - 发布了站点,然后将配置更改为调试。

显然发生的事情是网站的 /bin 文件中的 Release dll 没有被新的 Debug dll 覆盖。我手动删除了 /bin 目录中的所有文件,你瞧——一切都编译得很完美。

所以马克和约翰——你们都在现场——我实际上确实有两个命名相同的接口。

非常感谢您的帮助 - 如果您没有给我这些指示,我永远不会最终解决它。

于 2008-10-21T21:03:30.907 回答