2008-10-21 4 views
2

에서 나는 간단한 인터페이스를 가지고 : 클래스 VisitorsLogController이 인터페이스를 구현클래스 테스트/콘솔에 대한 컴파일하지만 Asp.net 응용 프로그램

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

합니다.

콘솔 응용 프로그램이나 TestFixture에서 콘솔/테스트 픽스처가 완벽하게 컴파일됩니다.

오류 1 ':

그러나

private IVisitorsLogController ctl; 

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

컴파일러 뒤에 코드에서이 코드로 동일한 솔루션에 Asp.Net 웹 사이트 (안 응용 프로그램)에서이 예외를 throw WebSiteBusinessRules.Interfaces.IVisitorsLogController ' 에는 'GetUniqueSubscribersCount '에 대한 정의가없고 확장 메서드 'GetUniqueSubscribersCount '수락 유형의 첫 번째 인수 'WebSiteBusinessRules.Interfaces.IVisitorsLogController' 볼 수 있습니다 (당신은 지시문 또는 어셈블리 참조를 사용하여 누락?) 같은 파일이 코드 아직

:

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

컴파일러는이 줄을 불평하지 않고 컴파일합니다. 실제로 새로운 인터페이스를 추가하면 컴파일러는 asp.net 페이지를 컴파일하려고 할 때 불평을합니다.

지시어 또는 어셈블리 참조를 사용하여 누락 될 수 없습니다. 그렇지 않으면 두 방법 모두 실패합니다.

이것은 나를 미치게합니다!

아무 생각나요?

감사합니다,

제레미

답변

0

코드의 다른 중요한 비트가 VisitorsLogController가 될 것 같습니까? VisitorsLogController가 IVistorsLogController 인터페이스를 구현하고있는 것 같습니다.

마우스 오른쪽 버튼을 클릭하고 GoTo 정의는 일을 명확히해야한다고 생각합니다.

0

내가 포함 된 각 파일에 네임 스페이스를 선택하여 시작하고 충돌 또는 기대하지 않는 네임 스페이스를하지 않도록 할 것.

ctl = VisitorsLogController.Instance; 

: 관심의 아웃

1

, 다음 줄을 컴파일 할 수 있습니까? 나는 어떻게 든 당신이 똑같은 이름의 두개의 인터페이스를 가지고 있는지 궁금 할 것입니다.

ctl.을 입력하고 Ctrl-Space를 누르면 Intellisense에서 묻는 메시지는 무엇입니까?

+0

John - 예, 잘 컴파일됩니다. 그러나 ctl.GetUniqueMembersCount()를 넣 자마자 컴파일이 실패합니다. ctl.and Ctl + Space를 입력하면 목록에 GetUniqueMembersCount가 표시됩니다. 스크린 샷을 업로드 할 수 없습니다. –

+0

Intellisense의 제안을 수락하면 빌드가 실패합니까? Yikes. 가능한 한 Visual Studio를 다시 시작하고 빌드를 정리하는 것이 좋습니다. 뭔가 이상한 것 같아. –

0

이 솔루션에는 웹 사이트와 3 개의 클래스 프로젝트 (데이터 계층, 서비스 계층 및 핵심 서비스)가 포함되어 있습니다. 그것들은 프로젝트로서 웹 사이트에 대한 참조로 추가됩니다. 릴리스 용으로 한 번에 솔루션을 컴파일하고 사이트를 게시 한 다음 config를 Debug로 변경했습니다.

분명히 무슨 일이 있었는지는 웹 사이트의/bin 파일에있는 Release dll이 새로운 Debug dll에 의해 덮어 쓰지 않았 음이 분명합니다. 필자는 수동으로/bin 디렉토리의 모든 파일을 삭제했고, 보라 - 모든 것이 완벽하게 컴파일되었습니다.

마크와 존 - 두 곳 다 똑같습니다 - 사실 똑같은 이름의 두 개의 인터페이스가 있습니다.

도움을 주셔서 대단히 감사합니다.이 포인터를 내게주지 않았다면 마침내 해결하지 못했을 것입니다.