سلام امیدوارم که لبتون خندون و حالتون خوب باشه.
اخیرا در حال توسعه یک پروژه آموزشی هستم و داخل پروژه به یک سیستم save و Load نیاز پیدا کردم و پس از کمک گرفتن از یک فرد حرفه ایی و بررسی راه های موجود تصمیم گرفتم که از مبحثی به نام Reflection داخل پروژه استفاده کنم و دوست دارم مطالبی که یاد گرفته ام رو با شما عزیزان هم به اشتراک بگذارم.
قبل از هرچیز، اگر با فایل ها اسمبلی که در هنگام خروجی گرفتن برنامه های Net. ایجاد می شوند آشنایی ندارید، توصیه میکنم نوشته پس از کامپایل شدن برنامه های مبتنی بر Net. چه فایل هایی داریم؟ را مطالعه کنید.
توسعه دهندگان می توانند با استفاده از Reflection به بررسی و کنترل MetaData های Types، Objects و Assemblies بپردازند.
از این قابلیت می توان برای بدست آوردن اطلاعاتی در رابطه با ساختار و رفتار یک کد استفاده نمود.( به عنوان مثال اطلاعاتی در رابطه با classes , methods , attributes , properties , fields و events)
هنگامی که برنامه نیاز به آنالیز و ایجاد تغییر در رفتار کد دارد، به عنوان مثال در زمان های زیر می توان از Reflection کمک گرفت:
با استفاده از این قابلیت قدرتمند، برنامه توانایی استخراج و استفاده از اطلاعاتی در رابطه با موارد زیر را پیدا میکند:
جهت استفاده از Reflection در C# می بایست از فضای نام System.Reflection
استفاده نمود.
مثال :
using System; using System.Reflection; class MyClass { public int MyField; public void MyMethod() {} } class Program { static void Main() { Type t = typeof(MyClass); Console.WriteLine("Name: " + t.Name); Console.WriteLine("Fields: "); foreach (FieldInfo f in t.GetFields()) { Console.WriteLine("- " + f.Name); } Console.WriteLine("Methods: "); foreach (MethodInfo m in t.GetMethods()) { Console.WriteLine("- " + m.Name); } } }