سؤال

في بعض الأحيان أود أن أعرف منطق بعض التغييرات في واجهة برمجة التطبيقات. نظرًا لأن 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");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top