מדריך NET. – שימוש ב- Metadata ו- Reflection
טכנולוגיות רבות ב- 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);
}
פלט התוכנית:
תגובות בפייסבוק