Класс скомпилируется для Tests / Console, но не в приложении Asp.net - PullRequest
2 голосов
/ 21 октября 2008

У меня простой интерфейс:

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

класс ПосетителиLogController реализует этот интерфейс.

Из консольного приложения или TestFixture - без проблем - консоль / тестовое устройство отлично компилируются.

Однако, с веб-сайта Asp.Net (не приложения) в том же решении с этим кодом в коде

private IVisitorsLogController ctl;

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

компилятор выдает это исключение:

Ошибка 1 'WebSiteBusinessRules.Interfaces.IVisitorsLogController' не содержит определения для 'GetUniqueSubscribeersCount' и нет метод расширения GetUniqueSubscribeersCount принимает первый аргумент типа 'WebSiteBusinessRules.Interfaces.IVisitorsLogController' может быть найден (вы пропускаете используя директиву или сборку ссылка?)

пока для этого кода в том же файле:

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

компилятор компилирует эти строки без жалоб. Фактически, если я добавляю что-то новое в интерфейс, компилятор теперь жалуется при попытке скомпилировать страницу asp.net.

Это не может быть пропущено при использовании директивы или ссылки на сборку, иначе оба метода потерпят неудачу.

Это сводит меня с ума!

Есть мысли, пожалуйста?

Спасибо

Джереми

Ответы [ 4 ]

1 голос
/ 21 октября 2008

Из интереса, вы можете скомпилировать следующую строку:

ctl = VisitorsLogController.Instance;

? Мне просто интересно, есть ли у вас два интерфейса с одинаковыми именами.

Что подсказывает Intellisense, когда вы набираете ctl. и нажимаете Ctrl-Space?

0 голосов
/ 22 октября 2008

Решение содержит веб-сайт и три проекта класса (Уровень данных, Уровень обслуживания и Базовые службы). Они добавляются в качестве ссылок на веб-сайт в качестве проектов. Однажды я скомпилировал решение для Release - опубликовал сайт, а затем изменил конфигурацию на Debug.

Очевидно, что произошло то, что DLL-файлы Release в файле / bin веб-сайта не были перезаписаны новыми DLL-файлами Debug. Я вручную удалил все файлы в каталоге / bin, и вот - все отлично скомпилировано.

Итак, Марк и Джон - вы оба были на высоте - у меня фактически было два интерфейса, названных одним и тем же.

Большое спасибо за вашу помощь - если бы вы не дали мне эти указатели, я бы, наконец, не разобрался с этим.

0 голосов
/ 21 октября 2008

Казалось бы, другим важным фрагментом кода был бы VisitLogController, не так ли? Похоже, что PlayersLogController реализует другой интерфейс IVistorsLogController.

Правильный щелчок и определение GoTo должны прояснить ситуацию, я думаю.

0 голосов
/ 21 октября 2008

Я бы начал с проверки пространств имен в каждом из задействованных файлов и убедился, что у вас нет конфликта или пространства имен, которого вы не ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...