Dispose
должен быть разработан, чтобы сделать его цель, расположив объект. Эта задача безопасна и не выдает исключения большую часть времени . Если Вы видите, что себя выдаете исключения от Dispose
, необходимо, вероятно, думать дважды, чтобы видеть, делаете ли Вы слишком много материала в нем. Около этого я думаю Dispose
, должен рассматриваться как все другие методы: обработайте, если можно сделать что-то с ним, позвольте ему пузырь, если Вы не можете.
РЕДАКТИРОВАНИЕ: Для указанного примера я написал бы код так, чтобы мой код не вызывал исключение, но очистка TcpClient
могла бы вызвать исключение, которое должно быть допустимым, чтобы распространить , по-моему (или обработать и повторно бросить как более универсальное исключение, точно так же, как любой метод):
public void Dispose() {
if (tcpClient != null)
tcpClient.Close();
}
Однако точно так же, как любой метод, если Вы знаете tcpClient.Close()
, мог бы выдать исключение, которое должно быть проигнорировано (не имеет значения), или должен быть представлен другим объектом исключения, Вы могли бы хотеть поймать его.
Использовать XmlDocument.SelectSingleNode
.
] Пример:
XmlDocument doc = new XmlDocument();
doc.Load("yourXmlFileName");
XmlNode node = doc.SelectSingleNode("yourXpath");
Затем вы можете получить доступ к node.ChildNodes
, чтобы получить нужные значения (пример):
string extension = node.ChildNodes[0].InnerText;
string value = node.ChildNodes[1].InnerText;
И затем использовать эти значения при создании вашего объекта MimeType.
Изменить: Некоторая информация по XPath.
Есть несколько действительно хороших руководств по XPath, попробуйте здесь и здесь . Рекомендация W3C сама по себе может быть немного подавляющей.
В вашем примере вы можете попробовать использовать следующий XPath для выбора первого узла MimeType
в документе (где root
- это любое имя вашего корневого элемента):
string xPath = "root/MimeType[1]"
Надеюсь, что помогает!
Следующий метод должен обеспечить основу для получения MIME-типа здесь
public MimeType RunXPath(string mimeType)
{
XmlNode node = _xmlDoc.SelectSingleNode(
string.Format("//MimeType/Extension[text()="{0}"]/ancestor::MimeType", mimeType));
foreach(XmlNode node in nodes)
{
// Extract the relevant nodes and populate the Mime Type here...
}
return ...
}
Уловка состоит в том, чтобы найти MimeType на основе текста в расширении, а затем получить предка MimeType для этого совпадения.
Вы используете классы в пространстве имен System.Xml.XPath .