13

特定のAPI変更の理由を知りたいことがあります。グーグルはこの質問で私を助けていないので、多分StackOverflowはそうすることができます。MicrosoftがGetAttributeXML要素のヘルパーメソッドを削除することを選択したのはなぜですか?以前のMSXMLのようなものSystem.Xmlがありましたが、どちらも属性値または欠落している場合は空の文字列を返します。ありますが、実装されていませんでした。XmlElement.GetAttribute("x")getAttributeXElementSetAttributeValueGetAttributeValue

確かに、プロパティをテストして使用するためにロジックを変更するのはそれほど手間はかかりませんXElement.Attribute("x").Valueが、ユーティリティ関数を一方の方法()で提供するのはそれほど便利でSetAttributeValueはなく、もう一方の方法では奇妙に思えます。私が簡単に休んで、それから何かを学ぶことができるように、決定の背後にある理由を知っている人はいますか?

4

2 に答える 2

16

次のような属性値を取得することになっています。

var value = (TYPE) element.Attribute("x");

アップデート:

例:

var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");

この記事を参照してください:http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx。同じことが属性に対しても機能します。

于 2010-08-04T23:26:13.707 に答える
5

正確な理由はわかりませんが、C#拡張メソッドを使用すると、問題を自分で解決できます。

public static string GetAttributeValue(this XElement element, XName name)
{
    var attribute = element.Attribute(name);
    return attribute != null ? attribute.Value : null;
}

許可:

element.GetAttributeValue("myAttributeName");
于 2010-08-04T23:24:51.867 に答える