FtpWebResponse реализует IDisposable, но у него нет метода Dispose. Как это возможно?Как этот класс реализует IDisposable, если у него нет метода Dispose?
5
A
ответ
9
У него есть метод Dispose через наследование, но это явная реализация. Для того, чтобы назвать это, вы должны использовать
((IDisposable)myObject).Dispose();
Или, конечно, просто обернуть его в using
блоке, как это делает явный вызов для вас.
10
Его реализованы в базовом классе WebResponse см http://msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx
3
Он реализован в базовом классе WebResponse
void IDisposable.Dispose()
{
try
{
this.Close();
this.OnDispose();
}
catch
{
}
}
alt text http://img227.imageshack.us/img227/2428/redgatesnetreflector.png
2
Он наследует от System.Net.WebResponse, который реализует эти методы.
4
Если вы внесете в явном виде interface
, вы не получите метод в списке. Чтобы получить доступ к этому методу, вам необходимо выполнить этот объект для реализации interface
.
public class MyClass : IDisposable
{
void IDisposable.Dispose()
{
throw new NotImplementedException();
}
}
Ссылка: http://msdn.microsoft.com/en-us/library/ms173157.aspx
Смежные вопросы
- 1. Класс, который реализует IDisposable без функции Dispose?
- 2. Почему класс Stream реализует IDisposable?
- 3. Написание собственного метода Dispose вместо использования Idisposable
- 4. Почему Enumerable.Range реализует IDisposable?
- 5. Почему System.Net.Mail.MailMessage реализует IDisposable
- 6. Правильный способ реализации Finalize и Dispose (Когда родительский класс реализует IDisposable)
- 7. Почему IDisposable мгновенно вызывает Dispose()?
- 8. System.ServiceModel.ServiceHost реализует IDisposable, но Dispose не является общедоступным
- 9. Почему класс реализует IDisposable явно, а не неявно?
- 10. .NET CF 2.0: Stream реализует IDisposable ... вроде?
- 11. Реализация IDisposable в подклассе, когда родитель также реализует IDisposable
- 12. IDisposable Инициируется при вызове метода
- 13. Почему WaitHandle реализует IDisposable явно?
- 14. Что находит, если у него нет аргументов?
- 15. Как возврат конструктора, если у него нет типа возврата?
- 16. Object dispose in IDisposable class
- 17. ClientBase не реализует IDisposable member
- 18. Реализация IDisposable на простой класс
- 19. Почему метод Dispose() недоступен для моего объекта IDisposable?
- 20. Каково использование метода DISPOSE?
- 21. XmlReader и IDisposable
- 22. Если у меня есть метод Dispose, должен ли я реализовать IDisposable?
- 23. C# manual-Dispose -of -an -IDisposable semantics
- 24. открытый класс MyClass: IDisposable?
- 25. Если в таблице нет ада, если у него есть тень?
- 26. Как реализовать Dispose В наследуя класс
- 27. Как андроид запускает java-приложения, если у него нет JVM
- 28. Как удалить узел, если у него нет родительского узла
- 29. Как проверить состояние флажка, если у него нет атрибута «checked»?
- 30. Как подавить подчиненный отчет, если у него нет данных?
+1 для упоминания о его явной реализации. Как говорили другие на базе, но вы все равно видите это - вы ответили, почему вы не можете легко это увидеть. –
Какова причина использования явной реализации? – MCS
@MCS, это хороший вопрос! На самом деле, это звучит как хороший * новый * вопрос для stackoverflow, почему некоторые классы имеют явные реализации IDisposable, так как он маскирует тот факт, что объект должен быть удален для среднего разработчика, который не обращается к документации каждый раз, когда он/она использует класс. –