2009-05-15 4 views
2

새로 설치 한 Visual Studio 2008 (새 PC) 및 ReSharper 4.5에 문제가 있습니다.ReSharper 및 새로운 XYZ() 인텔리 센스로 자동 완성

편집 : 문제가 열리는 위치는 http://youtrack.jetbrains.com/issue/RSRP-107956입니다. 나는 문제가 발생 어디에 문제로

public static TValue GetOrCreate<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key) 
    where TValue: new() 
{ 
    #region Parameter Validation 

    if (ReferenceEquals(null, key)) 
     throw new ArgumentNullException("key"); 

    #endregion 

    TValue result; 
    if (dictionary.TryGetValue(key, out result)) 
     return result; 

    result = new <-- problem here 
    dictionary.Add(key, result); 
    return result; 
} 

이 라인이 표시 :


나는 다음과 같은 코드가 있습니다.

나는이를 입력 할 때 (| 내 커서의 지점을 표시) :
result = new | 

는 내가 거기에 TValue과 인텔리 드롭 다운을 얻을, 그것은 선택됩니다.

아무리 내가 지금 입력 한 내용이 내가 끝낼 것입니다 : 다시

result = new _ (|); 

| 커서 위치를 표시합니다. 여기에 몇 가지 문제가 있습니다

  1. 는 상관없이 내가 입력 한 내용의 탭으로 문자가 밑줄 후 삽입이 아니라 두 개의 공백 내가 위에서 사용했다한다.
  2. 내가 괄호 및 완료에 괄호를 추가 해제했지만, 그들은 여전히 ​​
  3. 유형을 선택 삽입 ReSharper에서 얻을 불가능한 것 같다이 특정 구조에 추가하고, 그냥 대신 밑줄을 추가 (아니, 밑줄은 "유형이 여기에있다"라고 말하는 내 방식이 아니며 유형이 없지만 밑줄 + 탭 문자가 포함 된 형식으로 확장됩니다.

키 인텔리 센스가 올라 왔을 때 타격을 시도했습니다 :

  • 스페이스 ence : 괄호는 다음과 같이 보입니다 : (|), ie. 공간이 (
  • 를 입력) 추가 - 즉, 괄호에게
  • T를 열어 +의 위의 (즉,이 '아무튼 도움이 첫번째 TValue의 문자와 희망을, 밖으로 입력합니다. t)

여전히 "도움"나는 기본 Alt 키를 마우스 오른쪽처럼 풀러 인텔리 드롭 다운으로 전환 키 중 하나가, 그것은 단지 많은에게 내가 선택할 수있는 많은 것들을 추가 치면 것을 유일한 것은 TValue가 선택되었지만 이제 Enter 또는 Tab을 누르면 코드가 올바르게 확장됩니다.

내가 조정할 필요가있는 사람이 누구인지 알고 있습니까?


편집 : 나는 게시하기 전에, 지금은 제대로 자동 완료하는 방법에 대해 생각하고, 매개 변수 유효성 검사 아마도 필요하지가 결정, 그래서 나는 그것을 멀리했다, 보라 보라.

이것은 ReSharper의 그냥 (nother) 버그입니까?

해당 행에 코드를 올바르게 작성해야합니다. 밑줄 대신 TValue를 쓰면 프로젝트가 빌드됩니다.


편집는 : 그건 내 선택을 오버라이드 이상한 템플릿이 있다면 바로 테스트 할 첫 번째 일은 내가 장애인이었다 사용할 수 있습니다 ReSharper에서에서 활동하는 템플릿이 없습니다, 참고.

답변

1

이 동작을 확인할 수 있습니다. 나는 똑같은 결과를 얻는다.

나를 위해 두 개의 문자 'TV'를 입력하면 intellisence (Tab 또는 Ctrl + Space)가 TValue (|)로 확장됩니다. 그러나 'new'를 입력하고 'TV'를 똑바로 입력하면 작동하지 않습니다. Aftern 'new'Esc를 눌러야 만합니다 ... 이상한 행동, 실제로 ...

업데이트 :이 문제로 연결되는 영역은 ... 영역을 제거하는 것입니다 (두 개의 #region 키워드 만 - 아닌 if 절) 도움이됩니다.

+0

문제가되지 않는 단계로 다시 보냅니다 "똑똑한"ReSharper 인텔리 센스 드롭 다운이 사용되는 한 모든 것이 예상대로 작동하지 않습니다. JetBrains에 대한 보고서를 보내 드리겠습니다. –

+0

질문을 게시했습니다. 찾은 것을 다시보고하겠습니다. 그것이 나 자신인지 아닌지를 알고 싶었 기 때문에 당신의 답장을 받아 들인 대답으로 표시 할 것입니다. 그 이유는 당신이 아마도 그것이 일종의 버그 일 것이라고 의심을했기 때문입니다. –

+0

그리고 지역에 관해서는 일종의 것이므로 제거하면 자동 완성 선택 TValue가되지만 명시 적으로 꺼져있는 괄호가 다시 추가됩니다. 하지만 앞으로 나아갈 수있는 한 발 앞선 것입니다. 감사. –

2

나는 버전 1.5부터 ReSharper 사용자였으며 특정 패턴을 발견했습니다. 먼저 그들은 C#의 기능을 지원합니다. 그리고 나서 그들은 꽤 잘 지원합니다. 그렇다면 가장자리 케이스를 제외하고는 그것을 잘 지원하고 드문 버그를 제외하고는 잘 지원합니다.

제네릭이 2 단계 또는 3 단계입니다. 그들은 GetOrCreate 안에 TValue이 유형 매개 변수임을 안다는 사실에 도달했으며, 심지어 이제는 new() 제약 조건을 가지고 있다는 것을 알고 있기 때문에 "new"다음에 완료까지 생성자가있는 유형으로 간주되어야합니다. . 그러나 실제로 기능을 원활하게 작동시키는 데있어 약간의 버그가있는 것 같습니다.

하십시오 그들에게보고 그것을 할, 그래서 그들은 공분산와 함께, 희망 C# 4.0의 출시 이전 4 단계로 얻을 수 contravariance 내가 입력 한 경우 2.

+0

솔직히 말해서, 나는이 근처에있다.

+0

그래,하지만 1.5 버전부터 그들은 지속적으로 개선되었다고 말할 수 있습니다. 더 많은 사람들이 고품질의 버그보고를 받고 있습니다. "너무 느리다"또는 "너무 많은 메모리가 필요합니다"이상. 나는 그들이 실제로보고있는 버그 중 일부를 보았다. 나는 그들이 내 제안을 구현하는 것을 보았다. 저는 솔루션 전체 분석을 제안한 사람들 중 한 사람입니다. –

+0

내가 여기에서 물은 질문의 상당히 상세한 사본을 게시 했으므로 잘하면 그들이 그것을 고칠 수있을 것이다. –