에 방법을 표시되지 :비주얼 스튜디오 인텔리는 다음과 같은 두 개의 인터페이스 (이 작은 예, 나의 실제 구현이다)을 감안할 때 일반적인 과부하
public static class Require {
public static IAssertion<T> That<T>(T value) {
...
}
public static IStringAssertion That(string value) {
...
}
}
다음 작업을 수행 할 수 있어야한다 :
public void TestMethod(SomeClass a, string b) {
Require.That(a).IsNotNull();
Require.That(b).IsNotNullOrEmpty().Evaluate(SomeMethodThatAcceptsString);
}
티를 s 코드가 컴파일되고 실제로 실행됩니다. 심지어 같은 패스 테스트, 설정할 수 있습니다
Assert.IsInstanceOf<IStringAssertion>(Require.That(string.Empty));
Assert.IsNotInstanceOf<IStringAssertion>(Require.That(new object());
내가으로 실행하고 문제와이 문제의 요점을, 비주얼 스튜디오 2005 인텔리이 둘 사이의 차이를 해결되지 않는 것입니다.
내가 Require.That("...").
를 입력하면 내가
Evaluate(Predicate predicate) IsNull() IsNotNullOrEmpty()
의 목록을 볼 것으로 예상한다 대신 내가 아무것도 볼 수 없습니다.
오버로드에 대해 동일한 메소드 이름을 유지하고 싶습니다. IAssertion 인터페이스의 Evaluate 메서드에있는 술어 때문에 일반 오버로드를 유지하려고합니다.
또한 확장 메서드를 사용하여이 작업을 수행 할 수 있다는 것을 알았지 만 아직 지원되지 않으므로 옵션이 아닙니다 .Net 2.0을 사용하고 유창한 API를 유지하려고합니다.
업데이트 :
비주얼 스튜디오에 타사 추가 기능을 포함 좋은 답변이왔다. 불행히도 저는 현재 개발중인 회사의 테이프 때문에 Visual Studio 용 애드온 도구를 설치하거나 구입할 수있는 위치에 없습니다. (나는 정치를 싫어!) 나는 코드를 모두 비주얼 스튜디오 2005 및 Visual Studio 업데이트 2008 년
에서 작동 유일한 옵션 찾고
:
이 비주얼 스튜디오 2008에서 작동합니다. 고맙습니다, Luke. Visual Studio 2005 만 남았습니다.
도트 기호 뒤에 Ctrl + 스페이스 바를 치려고합니까? –
예, 아니요. VS가 Intellisense의 메소드 목록을 채우는 데 사용하는 해석자가 다소 어리 석하다고 읽었습니다. 올바른 목록을 작성하는 데 도움이 될 수있는 코드가 있음을 기대했습니다. – Jason
흠, intellisense는 VS2008SP1을 사용하여 예상대로 모든 것을 집어 들고있는 것 같습니다. – LukeH