문제

나는 다음과 같이 인터페이스가 정의되어 있습니다.

public interface IDatabase{ void Get<TTypeToFetch> ();}

그리고 내가하려고 할 때 :Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); 다음 오류가 발생합니다.

system.typeloadexception : system.typeloadexception : 신체의 서명 및 메소드 구현의 선언이 일치하지 않습니다.

뭐가 잘못 되었 니? (NMOCK2와 함께 Visual Studio 2008을 사용하고 있습니다) 모두에게 답을 줄 수 있습니다. 곧 끝내야합니다. 고마워요, 루이사

도움이 되었습니까?

해결책

나는 이것이 Nmock, 아마도 버그에 문제가 될 수 있다고 생각합니다. 유형 IDatabase 일반적인 것이 아니므로 호출 할 때 Get<T>, 다른 TS는 런타임에 사용할 수 있습니다. 그러나 Nmock이 모의를 생성 할 때, 이것이 사실임을 이해하지 못하는 것처럼 보이지 않으며 Kablammo (각 메소드 서명)가 제공된 유형 매개 변수에 따라 다릅니다.

대신 이것을 시도하십시오.

public interface IDatabase<T> {
  void Get<T>();
}

또한, 유형은 아니어야합니다 Get ~이다 T, 아니다 void?

다른 팁

나는 내 자신의 인터페이스와 동일한 예외를 가졌다. 인터페이스를 공개하도록 변경하면 모든 것이 정상적으로 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top