при кодировании, что является самым быстрым способом определить, является ли тип IDisposable

1113 После долгого ожидания этого ответа я разобрался, и думаю, что многим другим понадобится простое решение этого вопроса.

Предупреждение. Это решение предназначено для пользователя Eclipse, который использует Indigo или более низкую версию. Все еще ищу решения пользователей, которые используют другие IDE для Android.

Расширяя FragmentActivity для вашего приложения с версией 2.2 или ниже, вы можете скачать android.supportv4.jar из здесь или вы можете получить его из каталога android-sdk ..\android-sdk\extras\android\support\v4 и вложите в свой проект.

Если в вашем проекте нет директорий libs, создайте директорию libs и вставьте файл android.supportv4.jar в эту директорию.

В рабочей области проекта eclipse: выберите project/application, в котором вы хотите использовать. Щелкните правой кнопкой мыши по Project и выберите опцию Properties. В этом выберите Java build path и выберите вкладку Libraries

enter image description here

Теперь нажмите Add Jar. Он отобразит текущий список проектов с выбранным текущим проектом.

Разверните это, перейдите в каталог libs и выберите файл android.supportv4.jar, затем нажмите ОК. Это будет отображаться в списке сейчас. Remember add the jar file as relative path path not as absolute path, so whenever if you change the directory of your project or open in another machine then will detect automatically for the project directory. Теперь нажмите «ОК», чтобы закрыть диалоговое окно «Свойства».

Вы можете импортировать android.support.v4.app.FragmentActivity;, поместив мышь над FragmentActivity или нажав ctrl + shift + o, чтобы импортировать отсутствующие файлы.

Надеюсь, теперь у вас есть класс FragmentActivity.

Если вы используете eclipse juno, вам не нужно беспокоиться о загрузке файла jar поддержки. Он будет автоматически помещен в каталог libs и автоматически добавлен в путь вашего проекта. Если нет, перейдите к опции Properties и добавьте ее.

Еще одна вещь. Если вам нужно поддержать ваше приложение для более низкой версии, соберите более высокую версию и добавьте эту строку в файл androidmanifest.xml


, теперь она будет поддерживать от 1,5 до 4,0 .1 версия устройства.

5
задан Ralph Shillington 4 June 2009 в 13:55
поделиться

10 ответов

Поместите его в оператор using и посмотрите, компилируется ли он:

using (var x = new TypeInQuestion(params)) {}

Это не будет компилироваться, если TypeInQuestion не реализует IDisposable.

Другой Самый быстрый способ - использовать ReSharper, щелкнуть по переменной (в данном случае x ) и посмотреть, есть ли у нее предложение поместить ее в оператор using.

8
ответ дан 18 December 2019 в 08:30
поделиться

К сожалению, не существует "простого простого простого" способа.

Вам нужно будет нажать F12 на имени класса, а затем продолжать нажимать F12 на базовых классах, пока вы не войдете в базовый класс, если какой-либо из них реализует IDisposable, он у вас есть.

1
ответ дан 18 December 2019 в 08:30
поделиться

Если тип связан с вводом-выводом, окнами / элементами управления или графикой, я обычно воспринимаю это как намек на то, что мне следует искать метод Dispose.

Кроме того, наличие ' Close »может означать, что тип является одноразовым, например, если у вас есть ссылка на XmlReader (который является IDisposable), вы не можете увидеть метод Dispose, потому что он реализован явно.

1
ответ дан 18 December 2019 в 08:30
поделиться

Если вы получил ReSharper , выделите переменную, дождитесь лампочки и нажмите Alt + Enter. Если один из вариантов - «Обернуть с помощью 'using'», он IDisposable.

6
ответ дан 18 December 2019 в 08:30
поделиться

Самый быстрый способ для меня - это обычно ввести блок using (с использованием фрагментов) для экземпляра типа, и в этом случае вы получите уведомление об ошибке, если тип не реализует IDisposable. Обычно это занимает всего пару секунд. Не очень удобно, но довольно быстро.

1
ответ дан 18 December 2019 в 08:30
поделиться

В самых последних IDE, если у меня есть какие-либо вопросы о том, реализует ли что-то IDisposible, я помещаю это в блок using. IDE сообщит вам, что это неверно, еще до того, как вы закончите со следующей строкой кода.

1
ответ дан 18 December 2019 в 08:30
поделиться

Это можно сделать в PowerShell, например,

[System.Management.Automation.Runspaces.pipeline].getinterface("IDisposable")

возвращает

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    IDisposable

, а

[datetime].getinterface("IDisposable")

ничего не возвращает.

1
ответ дан 18 December 2019 в 08:30
поделиться

С плагином ReSharper, установленным в Visual Studio, когда вы наведете курсор на объявление переменной, как на stringWriter в приведенном ниже фрагменте:

TextWriter writer = new StringWriter();
writer.WriteLine("Test");

Вы можете выбрать «поместить в 'using' construct» из меню «лампочка», которое превратит приведенный выше фрагмент в:

using (TextWriter writer = new StringWriter()) {
    writer.WriteLine("Test");
}

Если параметр «поместить в ...» отсутствует, тип не реализует IDisposable.

1
ответ дан 18 December 2019 в 08:30
поделиться

начните печатать и посмотрите, подхватывает ли intellisense метод .Dispose

(согласно комментариям, быстрый и (очень) грязный)

0
ответ дан 18 December 2019 в 08:30
поделиться

Это не так быстро, но вы также можете запустить FXCop, и он предупредит вас об объектах, которые являются IDisposable и не находятся в блоке using ().

Работа над устаревшим C # кода здесь, на работе, я обнаружил, что тот, кто написал его изначально, фактически создал метод ".Dispose ()" почти для каждого класса, даже если он не нужен, но классы фактически не реализуют IDisposable. Это означает, что в интеллекте все они имеют метод Dispose (), но не могут быть вставлены с помощью блоков () ... очень раздражает!

-1
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: