عنوان:

‫ایجاد و دسترسی به ویژگی‌های سفارشی C# با استفاده از Reflection


نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۱/۲۲ ۱۲:۴۳
آدرس: www.dntips.ir
در این مقاله، روش ایجاد و دسترسی به ویژگی‌های سفارشی (custom attributes) در زبان برنامه‌نویسی C# با استفاده از Reflection بررسی می‌شود. این مقاله بخشی از رویداد C# Advent 2025 است و تمام مقالات مرتبط در آنجا قابل دسترسی هستند. ویژگی‌های سفارشی در واقع کلاس‌هایی هستند که از کلاس System.Attribute ارث‌بری می‌کنند. برای مثال، یک ویژگی سفارشی به نام CoreAttribute ایجاد شده است که می‌تواند برای شناسایی نسخه هسته محصول که یک کلاس می‌تواند با آن استفاده شود، مورد استفاده قرار گیرد. این ویژگی از طریق سازنده، نسخه هسته را دریافت و در یک ویژگی به نام Version ذخیره می‌کند. همچنین، یک enum به نام CoreVersion برای تعریف نسخه‌های مختلف هسته تعریف شده است. برای استفاده از ویژگی‌های سفارشی، نام ویژگی باید با -Attribute به پایان برسد. به عنوان مثال، CoreAttribute می‌تواند به صورت [CoreAttribute(CoreAttribute.CoreVersion.V2)] استفاده شود. AttributeUsage یک ویژگی مهم است که نحوه استفاده از ویژگی سفارشی را مشخص می‌کند. این ویژگی شامل سه ویژگی اصلی است: AttributeTargets (که مشخص می‌کند ویژگی می‌تواند به چه عناصری اعمال شود)، AllowMultiple (که مشخص می‌کند آیا می‌توان از یک ویژگی چند بار روی یک عنصر استفاده کرد) و Inherited (که مشخص می‌کند آیا ویژگی توسط کلاس‌های مشتق شده به ارث می‌رسد). در این مثال، CoreAttribute فقط می‌تواند به کلاس‌ها اعمال شود و نمی‌توان آن را چند بار روی یک کلاس اعمال کرد. استفاده از Reflection به شما امکان می‌دهد تا این ویژگی‌ها را در زمان اجرا (runtime) بخوانید و از اطلاعات موجود در آن‌ها استفاده کنید. این روش برای افزودن فراداده (metadata) به کلاس‌ها و دسترسی به آن در زمان اجرا بسیار مفید است. به طور خلاصه، ایجاد ویژگی‌های سفارشی در C# با ارث‌بری از System.Attribute و استفاده از AttributeUsage برای تعریف نحوه استفاده از آن‌ها امکان‌پذیر است. با استفاده از Reflection، می‌توان این ویژگی‌ها را در زمان اجرا خواند و از اطلاعات آن‌ها بهره‌مند شد. این تکنیک به توسعه‌دهندگان C# امکان می‌دهد تا فراداده را به کلاس‌ها اضافه کرده و رفتار برنامه‌ها را در زمان اجرا سفارشی کنند.


مشاهده مطلب اصلی