html5-img
1 / 22

Attributes

Web Services. Attributes. ליווי מקצועי : ארז קלר www.corner.co.il. מבוא. הוספת Attributes לקוד. Attributes מותאמים. מבוא. כל קובץ מקומפל ב- # C נקרא Assembly . כל Assembly מורכב ממספר חלקים: MSIL, Manifest, Metadata ו- Resources .

Download Presentation

Attributes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web Services Attributes ליווי מקצועי : ארז קלר www.corner.co.il

  2. מבוא. • הוספת Attributes לקוד. • Attributes מותאמים.

  3. מבוא • כל קובץ מקומפל ב- #C נקרא Assembly . • כל Assembly מורכב ממספר חלקים: MSIL, Manifest, Metadata ו- Resources. • Assemblies הם רכיבים המתארים את עצמם באמצעות ה- Manifest. • Assemblies מכילים טיפוסים אשר גם הם מתארים את עצמם באמצעות ה- Metadata . • .NET Framework, באמצעות ה - Attributes, מאפשרת לשייך דברי הסבר, פירוש, ביאור לטיפוסים המוגדרים ב- Assembly. למחלקות,למתודות,למשתני המחלקה למאפיינים או אף ל-Assembly עצמו.

  4. מבוא • ניתן לראות Attribute כתגית, באמצעותה ניתן להפיץ מידע ל- Runtime על התכונות וההתנהגות של מחלקות, מבנים Enum’s ו- Assemblies. • Attribute הנה תכונה הצהרתית.. • באמצעות Attribute ניתן להרחיב את תיאור הטיפוסים של התוכנית מעבר למה שהשפה מגדירה. • המידע המוגדר ב- Attribute נשמר ב- Metadata של האלמנט אליו ה- Attribute מתייחס. • באמצעות ה- Attributes מתאפשר לנו להרחיב את ה- Metadata.

  5. מבוא C# מספקת מספר מילות מפתח להגדרת הטיפוסים אשר מוגדרים בתוכנית , מילות מפתח אלו משפיעות על הדרך בה ניתן לטפל בטיפוסים אלו. לדוגמה: • מחלקות יכולות להיות מוגדרות כ- Private או Internal . • מתודות ומשתני המחלקה יכולים להיות מוגדרים כ- Private, Public, Protected, Internal או כ- Protected Internal . • ניתן להגדיר מתודות ומשתני מחלקה כ- Static או Instance . • משתני מחלקה יכולים להיות מוגדרים כשדות רגילים, כ- שדות לקריאה בלבד (Read Only), או כשדות קבועים (Const). באמצעות Attribute ניתן להרחיב את התיאור מעבר למה שהשפה מגדירה. התיאור הנוסף יוכל להשפיע על הדרך בה טיפוסים אחרים, או ה- CLR יטפלו בטיפוסים שנכתוב.

  6. מבוא דוגמאות אפשריות ל- Attribute : • תיעוד. מועד כתיבת המחלקה או שיטה, תאריך עידכון אחרון, שם המחבר. • שיטה תבוצע על פי התנייה. בתהליך של פיתוח נרצה ששיטה אשר כותבת מידע לקובץ לוג תופעל בכל פעם שמתגלה תקלה. כאשר האפליקציה תופץ ללקוח, נעדיף שהתנהגות זו תבוטל. • שליטה על הדרך בה ניתן לבצע Serialization לטיפוסים. כאשר מעבירים אובייקטים ממחשב למחשב, האובייקט עובר תהליך הנקרא Serialization לעיתים נרצה לשלוט על האופן בו יועבר המידע.

  7. מבוא. • הוספת Attributes לקוד. • Attributes מותאמים.

  8. הוספת Attributes לקוד תחביר : [AttributeName(parameter1,parameter2, ... )] Attribute ניתן לייחס למחלקות, למשתני המחלקה, למתודות, למאפיינים וכו' לדוגמה: [MyAttribute (Param1,Param2)] class Sample { . . . public void Method1() { . . . } }

  9. הוספת Attributes לקוד לדוגמה: class Sample { . . . [MyAttribute (Param1,Param2)] public void Method1() { . . . } } class Sample { [MyAttribute (Param1,Param2)] private string m_Str; public void Method1() { . . . } }

  10. הוספת Attributes לקוד לדוגמה: ניתן להגדיר מספר Attributes למחלקה, משתנה מחלקתי או שיטה: class Sample { . . . [MyAttribute1 (Param1,Param2), MyAttribute2 (Param3)] public void Method1() { . . . } }

  11. הוספת Attributes לקוד דוגמאות ל- Attributes המוגדרים ב- .NET המחלקה FlagsAttribute מגדיר שימוש ב- Enum כ- Bitwise , לכל ערך ב- Enum ינתן ערך ייצוג של Bit . כל Bit ייצג ערך של Enum . השילוב של הביטים מגדיר את הצבע.

  12. הוספת Attributes לקוד דוגמאות ל- Attributes המוגדרים ב- .NET המחלקה FlagsAttribute – דוגמה Enum רגיל – כל ערך מיוצג על ידי Integer : enum ColorAsByte { Black = 0, Red = 1, Green = 2, Blue = 4 } Enum המעוטר על ידי FlagsAttribute על ערך מיוצג על ידי Bit בודד: [FlagsAttribute] enum ColorAsBit : byte { Black = 0, Red = 1, Green = 2, Blue = 4 } ניתן להסיר את המילה Attribute מה- Attribute .

  13. הוספת Attributes לקוד דוגמאות ל- Attributes המוגדרים ב- .NET המחלקה FlagsAttribute – דוגמה static void Main() { for (int val = 0; val <= 8; val++) Console.WriteLine("{0,3} - {1}",val, ((ColorAsByte)val).ToString()); for (int val = 0; val <= 8; val++) Console.WriteLine("{0,3} - {1}",val, ((ColorAsBit)val).ToString()); } הפלט

  14. הוספת Attributes לקוד דוגמאות ל- Attributes המוגדרים ב- .NET המחלקה ConditionalAttribute Attribute המעטר מתודה ומורה ל-CLR להפעיל אותה רק במידה ומוגדרת הוראת קדם מהדר ( preprocessor) מתאימה. הוראת קדם מהדר מוגדרת באמצעות הפקודה #define והיא חייבת ממוקמת להיות בראש קובץ (לפני ה- using ). הגדרת #define : #define CONDITION הגדרת קדם מהדר הערך המוגדר

  15. הוספת Attributes לקוד דוגמאות ל- Attributes המוגדרים ב- .NET המחלקה ConditionalAttribute- דוגמה #define Condition using System; class Sample { public void Print1() { Console.WriteLine("Hello There Version 1"); } [Conditional("Condition")] public void Print2() { Console.WriteLine("Hello There Version 2"); } } הגדרת קדם מהדר המתודה תרוץ רק כאשר יוגדר הערך “Condition” באמצעות הוראת הקדם מהדר

  16. מבוא. • הוספת Attributes לקוד. • Attributes מותאמים.

  17. Attributes מותאמים • שפת C# מאפשרת יצירת Custom Attributes על ידי יצירת מחלקה הנגזרת מהמחלקה Attributes . public class MyCustomAttribute:Attribute { . . . }

  18. Attributes מותאמים בשלב ראשון נגדיר את ייעוד ה- Attribute באמצעות AttributeUsage [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method, AllowMultiple = true)] במקרה זה, באמצעות ה- Attribute נוכל לספק מידע על מחלקות, מבנים ומתודות, ונוכל להגדיר לכל אחד מהם מספר Attributes. לא נוכל לתאר באמצעות ה- Attribute מאפיינים השייכים למחלקה משום שלא הוספנו זאת ב- AttributeUser

  19. Attributes מותאמים בשלב שני נגדיר מחלקה חדשה היורשת את המחלקה Attribute המוגדרת ב- .NET Framework . public class DeveloperInfoAttribute : Attribute { . . . } מחלקת ה- Custom Attribute חייבת לרשת את המחלקה Attribute . מקובל ששם המחלקה מסתיים המילה Attribute (כמו ב- Custom Exception).

  20. Attributes מותאמים הוספת משתני מחלקה ומאפיינים: public class DeveloperInfoAttribute : Attribute { string author_name; string class_description; public string AuthorName {. . .} public string ClassDescription{. . .} } המידע אשר יוצג ב- Assembly נשמר כ- Data Members של המחלקה. מאפיינים אלו מאפשרים לקרוא את המידע מה – Assembly באמצעות Reflection

  21. Attributes מותאמים השימוש ב- CustomAttribute : [DeveloperInfo(“moshe","this project demonstrate custom attribute build and usage")] public class MyClass { . . . [DeveloperInfo(“moshe","stam unnecessary method")] public void StamMetohd() { . . . } } ניתן להסיר את המילה Attribute מה- Attribute .

  22. Agenda • Introduction to Attributes. • Applying Attributes to Code. • Custom Attribute.

More Related