sina karimi
sina karimi
خواندن ۲ دقیقه·۲ سال پیش

کار با Reflection در C#

سلام امیدوارم که لبتون خندون و حالتون خوب باشه.
اخیرا در حال توسعه یک پروژه آموزشی هستم و داخل پروژه به یک سیستم save و Load نیاز پیدا کردم و پس از کمک گرفتن از یک فرد حرفه ایی و بررسی راه های موجود تصمیم گرفتم که از مبحثی به نام Reflection داخل پروژه استفاده کنم و دوست دارم مطالبی که یاد گرفته ام رو با شما عزیزان هم به اشتراک بگذارم.

قبل از هرچیز، اگر با فایل ها اسمبلی که در هنگام خروجی گرفتن برنامه های Net. ایجاد می شوند آشنایی ندارید، توصیه میکنم نوشته پس از کامپایل شدن برنامه های مبتنی بر Net. چه فایل هایی داریم؟ را مطالعه کنید.

توسعه دهندگان می توانند با استفاده از Reflection به بررسی و کنترل MetaData های Types، Objects و Assemblies بپردازند.

از این قابلیت می توان برای بدست آوردن اطلاعاتی در رابطه با ساختار و رفتار یک کد استفاده نمود.( به عنوان مثال اطلاعاتی در رابطه با classes , methods , attributes , properties , fields و events)

در چه زمانی Reflection بدردمون می خوره؟

هنگامی که برنامه نیاز به آنالیز و ایجاد تغییر در رفتار کد دارد، به عنوان مثال در زمان های زیر می توان از Reflection کمک گرفت:

  • Serialization of objects
  • Deserialization of objects
  • Code generators
  • Plugin systems

در صورت استفاده از Reflection برنامه چه توانایی هایی پیدا میکند؟

با استفاده از این قابلیت قدرتمند، برنامه توانایی استخراج و استفاده از اطلاعاتی در رابطه با موارد زیر را پیدا میکند:

  • Types and objects
  • Create new objects
  • Invoke methods
  • Access properties and fields
  • Inspect attributes

چگونه از 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(&quotName: &quot + t.Name); Console.WriteLine(&quotFields: &quot); foreach (FieldInfo f in t.GetFields()) { Console.WriteLine(&quot- &quot + f.Name); } Console.WriteLine(&quotMethods: &quot); foreach (MethodInfo m in t.GetMethods()) { Console.WriteLine(&quot- &quot + m.Name); } } }


توسعه دهندگانreflectionبرنامه نویسیسی شارپ
نیمچه برنامه نویس و توسعه دهنده بازی
شاید از این پست‌ها خوشتان بیاید