در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاعات اضافی به بخشهای مختلف برنامه استفاده میشوند.
این اطلاعات میتوانند به عناصری مثل:
▫️کلاسها (Classها)
▫️متدها (Methodها)
▫️ویژگیها (Propertyها)
▫️فیلدها (Fieldها)
▫️اسمبلیها (Assemblyها)
اضافه شوند و توسط Compiler یا با استفاده از Reflection در زمان اجرا خوانده شوند.
در سیشارپ Attributeهای مختلفی وجود دارند که هرکدام کاربرد خاصی دارند. برای مثال:
CLSCompliantAttribute
برای مشخص کردن این موضوع استفاده میشود که آیا کد با Common Language Specification (CLS) سازگار است یا نه. رعایت CLS باعث میشود کد بتواند در زبانهای مختلف .NET مورد استفاده قرار بگیرد.
[assembly: CLSCompliant(true)]
public class Demo
{
public static void Main()
{
Console.WriteLine("This code is CLS-compliant");
}
}
FlagsAttribute
برای مشخص کردن اینکه یک enum میتواند به عنوان یک bit field استفاده شود و با عملیات bitwise ترکیب شود.
[Flags]
enum ColorsFlags
{
Red = 1,
Blue = 2,
Green = 4
}
با استفاده از [Flags]، مقدار ترکیبی enum به شکل خواناتری نمایش داده میشود.
ObsoleteAttribute
برای مشخص کردن کدهای قدیمی (deprecated) استفاده میشود. کامپایلر میتواند هنگام استفاده از این بخشها هشدار یا خطا ایجاد کند.
[Obsolete("Use NewMethod instead", true)]
static void OldMethod()
{
}
همچنین در سیشارپ امکان ساخت Custom Attributeها وجود دارد.
برای این کار:
یک کلاس از System.Attribute ارثبری میکنیم. با AttributeUsage مشخص میکنیم Attribute کجا قابل استفاده است. Constructor و Propertyهای مورد نیاز را تعریف میکنیم.مثال:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class InfoAttribute : Attribute
{
public string Author { get; }
public string Version { get; }
public InfoAttribute(string author, string version)
{
Author = author;
Version = version;
}
}
🔗 جزئیات بیشتر را در این لینک بخوانید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#کامیار_شکیب (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______