TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2393 1.17K
آشنایی با Attributeها در سی‌شارپ

در سی شارپ، 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

______
GeeksforGeeks Attributes in C# - GeeksforGeeks Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
  • 👍 5
  • ❤ 1
  • 🔥 1
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
  6. Aug 24, 2026ایجنت‌ها دارن بزرگ می‌شن، از پرامپت تا لوپ تا گراف اولش همه‌چیز ساده بود: یه پرامپت می‌داد…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →