/// <summary> /// XML 属性から XmlFormatException を初期化する /// </summary> /// <param name="attr">エラーの発生した XML 属性</param> /// <returns>指定の XML 属性の情報で初期化した XmlFormatException</returns> public static XmlFormatException CreateFrom(XAttribute?attr, Exception?innerException = null) { var exception = new XmlFormatException("XML format is invalid.", innerException); exception.Input = attr?.Value ?? "<null>"; exception.Parent = attr?.Parent?.ToString() ?? "<null>"; return(exception); }
/// <summary> /// XML 属性の値を int として取得する /// </summary> /// <param name="attr">値を取得する XML 属性</param> /// <returns>変換済みの属性値</returns> /// <exception cref="XmlFormatException">属性が無い、または無効な値の場合</exception> public static int GetInt(this XAttribute?attr) { try { var value = attr?.Value ?? throw XmlFormatException.CreateFrom(attr); return(int.Parse(value, CultureInfo.InvariantCulture)); } catch (SystemException exception) { throw XmlFormatException.CreateFrom(attr, exception); } }