لماذا لا يكون لدى XElement طريقة getAttributeValue؟
-
25-09-2019 - |
سؤال
في بعض الأحيان أود أن أعرف منطق بعض التغييرات في واجهة برمجة التطبيقات. نظرًا لأن Google لم يساعدني في هذا السؤال ، فربما يمكن لـ Stackoverflow. لماذا اختارت Microsoft إزالة GetAttribute
طريقة المساعد على عناصر XML؟ في ال System.Xml
كان هناك العالم XmlElement.GetAttribute("x")
مثل getAttribute
في MSXML قبل ذلك ، يعيد كلاهما إما قيمة السمة أو سلسلة فارغة عند فقدانها. مع XElement
هناك SetAttributeValue
لكن GetAttributeValue
لم ينفذ.
بالتأكيد ليس الكثير من العمل لتعديل المنطق لاختبار واستخدام XElement.Attribute("x").Value
العقار ولكنه ليس مناسبًا وتوفير وظيفة الأداة المساعدة بطريقة واحدة (SetAttributeValue
) ولكن ليس الآخر يبدو غريبا. هل يعرف أي شخص الأسباب الكامنة وراء القرار حتى أتمكن من الراحة بسهولة وربما أتعلم شيئًا منه؟
المحلول
من المفترض أن تحصل على قيمة السمة مثل هذا:
var value = (TYPE) element.Attribute("x");
تحديث:
أمثلة:
var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");
إلخ.
انظر هذا المقال: http://www.hanselman.com/blog/improvinglinqcodesmellwithexplicitandImplicitCropversators.aspx. نفس الشيء يعمل للسمات.
نصائح أخرى
لست متأكدًا تمامًا من السبب ، ولكن مع طرق التمديد C# ، يمكنك حل المشكلة بنفسك.
public static string GetAttributeValue(this XElement element, XName name)
{
var attribute = element.Attribute(name);
return attribute != null ? attribute.Value : null;
}
يسمح:
element.GetAttributeValue("myAttributeName");