2009-05-15 11 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 +上記のいずれか(すなわち、それは「をdoesnのいる、助けTValueと希望の最初の文字を入力します。 t)

デフォルトのAlt-Rightのように完全なインテリセンスドロップダウンに切り替えるキーのうちの1つを押した場合、「選択」できる項目が多く追加されますTValueが選択されていますが、EnterキーまたはTabキーを押すとコードが正しく展開されます。

誰かが調整する必要があることを知っていますか?


編集:私は投稿する前に、私は今、それが正しく自動完了、方法について考えとパラメータの検証はおそらく必要ないが存在することを決めたので、私はそれを離れて取り、そして驚くなかれ。

これはReSharperの単なる(nother)バグですか?

私は、その行にコードを正しく書くことができます。アンダースコアの代わりにTValueを書くと、プロジェクトが構築されます。


編集は:それは私の選択をオーバーライド奇妙なテンプレートがあった場合だけでテストするために、まず最初に私が無効になっていた、有効になっているReSharperのには、ライブテンプレートはありません、注意してください。

答えて

1

この現象を確認できます。私はまったく同じ結果を得る。

私にとって、2つの文字「TV」を入力すると、インテリジェンス(タブまたはCtrl +スペース)がTValue(|)に展開されます。 しかし、 'new'と 'TV'を入力すると機能しません。私はEsc 'を押す必要があります...実際には奇妙な振る舞い...

UPDATE:この問題につながる領域です...リージョンを削除する(2つの#領域キーワードのみ - そうではありませんif節)は私を助けます。

+0

をステップするためにそれらを送り返す私が入力した場合は問題ではありません全体的には、「スマートな」ReSharperインテリセンスドロップダウンが使用されている限り、期待通りに機能しません。私はJetBrainsにバグレポートを送付します。 –

+0

質問を投稿しました。私が見つけたものを報告します。それが私のものかどうかを知りたかったので、おそらく何らかの不具合であると私が疑っていることを確認したので、私はあなたの回答を受け入れられた回答としてマークします。 –

+0

あなたはその地域について一種のものです。それを削除すると自動的に選択されたTValueが作成されますが、明示的に無効になっている括弧が再度追加されます。しかし、それは一歩前進であり、一つは起動する側です。ありがとう。 –

2

私はバージョン1.5からReSharperユーザーでしたが、私は特定のパターンに気付きました。まず、C#の機能をサポートしています。そして、それをかなりうまくサポートしています。それ以外の場合は例外的にサポートし、まれにしかサポートしません。

これらは2番目のステップ、3番目のジェネリックのステップです。彼らはの内部にあることを知り、TValueが型パラメータであり、現在はそれがnew()という制約を持っていることを知っているので、 "new"の後にコンストラクタを持つ型とみなされるべきです。 。しかし、実際に機能をスムーズに動作させるという点では少しバグがあるようです。

くださいは彼らにレポートにそれを行うので、彼らは、共変性と反変性で、うまくいけばC#4.0のリリース前に、手順4に取得することができます2.

+0

正直言って、私はこの近くにいるよ。

+0

ええ、でも、バージョン1.5以降、彼らは一貫して改善されているとも言えます。彼らが高品質のバグレポートを取得している場合はそうです。 「それは遅すぎる」または「あまりにも多くのメモリを必要とする」以上のものです。私が実際に報告したバグのいくつかを修正したのを見たことがあります。私はそれらが私の提案を実装するのを見ました。私は、例えば、ソリューション全体の分析を提案した人の一人です。 –

+0

私はここで質問した質問のかなり詳細なコピーを投稿しました。うまくいけば、それを修正することができます。 –

関連する問題