У меня проблема с недавно установленной Visual Studio 2008 (новый компьютер) и ReSharper 4.5.
Редактировать : Проблема открыта по адресу: 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 |
тогда я получаю выпадающий список значений IntelliSense с TValue в нем, и он выбран.
Независимо от того, что я сейчас печатаю, я получаю следующее:
result = new _ (|);
снова, | отмечает позицию курсора. Здесь есть несколько проблем:
- Независимо от того, что я печатаю, после подчеркивания вставляется символ табуляции, а не два пробела, как я должен был использовать выше.
- Я отключил добавление скобок и скобок по завершении, но они все еще добавлены для этой конкретной конструкции
- Кажется, невозможно заставить ReSharper вставлять выбранный тип, вместо этого он добавляет только подчеркивание (нет, подчеркивание - не мой способ сказать «тип идет сюда», оно расширяется до того, что я показал выше, без тип, но с подчеркиванием + символ табуляции вместо)
Ключи, которые я пытался нажать, когда intellisense активен:
- Пробел (разница: скобки выглядят так: (|), т.е. добавлен пробел)
- Tab
- Введите
- (- то есть открывающая скобка
- T + любой из вышеперечисленных (то есть напечатайте первую букву TValue и надейтесь, что это помогает, а это не так)
Единственное, что «помогает», - это если я нажму одну из клавиш, которая переключается в более полное раскрывающееся меню intellisense, например, Alt-Right по умолчанию, тогда оно просто добавляет гораздо больше вещей, которые я могу выбрать, все еще с выбранным TValue, но Теперь, если я нажму Enter или Tab, код будет расширен правильно.
Кто-нибудь знает, что мне нужно настроить?
Редактировать : Перед публикацией я подумал о методе и решил, что валидация параметров там, вероятно, не нужна, поэтому я забрал его, и вот, теперь он автоматически завершается правильно.
Это просто (еще одна) ошибка в ReSharper?
Обратите внимание, что если я правильно напишу код в этой строке, т.е. пишите TValue вместо подчеркивания, проект строится.
Редактировать : Обратите внимание, что в ReSharper нет активных шаблонов, которые были включены, это было первое, что я отключил, просто чтобы проверить, не был ли странный шаблон, который отвергал мой выбор.