164. Placing attributes

אתמול הכרנו קצת את המושג של Attribute.

ראינו שאנחנו יכולים לשים, למשל, SerializableAttribute מעל למחלקה Person בצורה הבאה:

1
2
[SerializableAttribute()]
public class Person

הקונבנציה של הFramework היא שהשמות של כל הAttributeים מסתיימים במילה Attribute. לכן, מאפשרים לנו להשמיט את המילה Attribute בבואנו לשים אחד:

1
2
[Serializable()]
public class Person

יותר מזה, אם אנחנו מאתחלים Attribute באמצעות הConstructor הדיפולטי שלו, אנחנו לא צריכים לציין את הקריאה באמצעות ה():

1
2
[Serializable]
public class Person

בנוסף, אם אנחנו צריכים לאתחל Properties של הAttribute שלנו, אנחנו יכולים לעשות זאת בצורה הבאה:

1
2
[XmlRoot("Person", Namespace = "http://personNamespace.org")]
public class Person

כאן אנחנו קוראים לConstructor שמקבל string ואחר כך מאתחלים את הProperty ששמו Namespace בערך "http://personNamespace.org". (מזכיר Object Initializer, ראו גם טיפ מספר 87)


לבסוף, נניח ואנחנו מעוניינים לאתחל מספר Attributeים, נוכל לעשות זאת במספר דרכים:

דרך אחת היא פשוט לרשום אותם אחד מתחת לשני:

1
2
3
4
[Serializable]
[CLSCompliant(false)]
[XmlRoot("Person", Namespace = "http://personNamespace.org")]
public class Person

דרך שנייה היא להשתמש בסוגריים המרובעים לכמה Attributeים:

1
2
3
[Serializable, CLSCompliant(false)]
[XmlRoot("Person", Namespace = "http://personNamespace.org")]
public class Person

או ככה למשל:

1
2
[Serializable, CLSCompliant(false), XmlRoot("Person", Namespace ="http://personNamespace.org")]
public class Person

אם הAttributeים בעלי ארגומנטים, יותר קריא לשים כל אחד בסוגריים משלו, אבל לפעמים זה גם קריא לשים אותם ביחד (למרות שבד"כ זה לא)

חג עצמאות שמח

שתף