Проблема в том, что XmlReader
использует явную реализацию интерфейса до внедряет IDisposable
. Таким образом, вы можете написать:
XmlReader reader = XmlReader.Create(filePath);
((IDisposable)reader).Dispose();
Тем не менее, я бы настоятельно рекомендовал использовать оператор using
в любом случае. Вы должны очень редко, чтобы вы вызывали Dispose
явно, кроме как внутри другой реализации Dispose
.
РЕДАКТИРОВАТЬ: Как уже отмечалось, это "исправлено" в .NET 4.5, поскольку оно предоставляет открытый метод Dispose
без параметров начиная с .NET 4.5, а также явную реализацию интерфейса. Так что, вероятно, вы компилируете против .NET 4.0 или более ранней версии (возможно, .NET 2.0 с учетом ваших тегов), но используете Reflector против .NET 4.5?