مشخصات مقاله
-
0
-
0.0
-
5720
-
0
-
0
آموزش right type در Reflection زبان C#
آموزش right type در Reflection زبان C# :
کلاس Type Class اساس و پایه مفهوم Reflecton در زبان C# است. کلاس Type به عنوان اطلاعات لازم اجرا، برای یک اسمبلی، ماژول و یا type استفاده می شود.
خوشبختانه، به دلیل این که همه کلاس ها در C# از کلاس object class به ارث رفته اند، ایجاد یک رفرنس به نوع (Type) یک شی (object) ، با استفاده از متد GetType() بسیار ساده است. اگر همچنین، اطلاعاتی در رابط یک نوع (Type) مقداردهی نشده (non-instantiated) بخواهید کسب کنید، می توانید از متد عمومی (Global) موجود به نام typeof() استفاده کنید، که همان کار GetType() را انجام می دهد.
در مثال عملی زیر، ما از هر دو روش برای اجرای کد خود استفاده کرده ایم :
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ReflectionTest
{
class Program
{
static void Main(string[] args)
{
string test = "test";
Console.WriteLine(test.GetType().FullName);
Console.WriteLine(typeof(Int32).FullName);
Console.ReadKey();
}
}
}
ما در مثال فوق از متد GetType() برای عمل برای دو متغیر مورد نظر خود و از متد typeof() برای کار با کلاس شناخته شده Int32 استفاده کرده ایم. همان طور که مشاهده خواهید کرد، خروجی اجرای هر دو متد اشاره شده، یک TypeObject است، که به راحتی می توان مقدار خاصیت FullName Property آن را خواند.
در برخی موارد، شما مکن است فقط نام نوع یا type ای که به دنبال آن هستید، را بدانید. در چنین موردی، بایستی یک رفرنس را از طریق یک اسمبلی مناسب به type مورد نظر ایجاد نمایید. در مثال بعدی، ما یک رفرنس به اسمبلی اجرایی، کد اسمبلی اجرا کننده کد جاری نیز است، ایجاد کرده و سپس لیست کلیه type های موجود در آن را استخراج کرده ایم.
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ReflectionTest
{
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] assemblyTypes = assembly.GetTypes();
foreach(Type t in assemblyTypes)
Console.WriteLine(t.Name);
Console.ReadKey();
}
}
class DummyClass
{
//Just here to make the output a tad less boring :)
}
}
خروجی کد مثال فوق، نام دو کلاس تعریف شده در اسمبلی یعنی کلاس Program و کلاس DumingClass است. اما در پروژه های بزرگتر، خروجی های لیست کامل تمامی کلاس های پروژه خواهد بود.
در این مثال، ما فقط نام Type ها را استخراج کردیم، اما به دلیل امکان ایجاد رفرنس به Type ها، کارهای بسیاری می توان با نام آن ها انجام داد. در درس بعدی، به تشریح و آموزش کامل کاربرد این رفرنس ها خواهیم پرداخت.