מדריך NET. – שימוש ב- Metadata ו- Reflection

‏ • John Bryce

טכנולוגיות רבות ב- NET. כגון, Serialization, .NET remoting, XML web services, WCF וכו' דורשות את היכולת לגלות את הפורמט של ה- Types בזמן ריצה (סוגים – Types – יכולים להיות: class, interface, struct, enum, delegate). ניתן לעשות זאת באמצעות metadata.

המחלקה Type

מחלקה זו הינה מחלקה מיוחדת ותפקידה לייצג את הפרטים (metadata) של טיפוס כלשהו. מחלקה זו מכילה כמאפיינים (ופונקציות) את כל הפרטים שאפשר לספר על טיפוס כגון:

  • שם הטיפוס
  • ה- Namespace בו הטיפוס נמצא
  • האם הוא public
  • איזה פונקציות יש לו
  • ועוד

קיימות 2 דרכים עיקריות ליצירת אובייקט מהמחלקה Type:

  • שימוש בפונקציה GetType של האובייקט – שיטה זו משמשת כאשר יש אובייקט ונרצה לדעת את הסוג שלו
  • שימוש באופרטור typeof – שיטה זו משמשת כאשר לא נרצה ליצור אובייקט

להלן דוגמא ל- 2 השיטות ולכמה מהמאפיינים של המחלקה Type:

//int x = 5;
//Type t = x.GetType();

Type t = typeof(int);

Console.WriteLine("Name: {0}", t.Name);
Console.WriteLine("IsClass: {0}", t.IsClass);
Console.WriteLine("IsAbstract: {0}", t.IsAbstract);
Console.WriteLine("IsSealed: {0}", t.IsSealed);
Console.WriteLine("IsArray: {0}", t.IsArray);
Console.WriteLine("IsPublic: {0}", t.IsPublic);
Console.WriteLine("IsValueType: {0}", t.IsValueType);
Console.WriteLine("Namespace: {0}", t.Namespace);

Console.WriteLine("\nMethods:");
foreach (System.Reflection.MethodInfo item in t.GetMethods())
{
  Console.WriteLine(item);
}

פלט התוכנית:

פלט - Type

תגיות: , , ,

ליאור זמיר

כיום אני ה- Webmaster של תוכנית החדשנות של HPE Software.לפני כן, הייתי מנהל תחום Webmaster ומרצה בכיר בג'ון-ברייס (במשך 9 שנים) בקורסים לפיתוח ותיכנות באמצעות Microsoft .NET, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.

תגובות בפייסבוק