دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل ServiceController در سی شارپ
1404/07/27 -
تریگر (Trigger) در Sql Server
1404/07/27 -
رتبه بندی در sql server با دستور rank
1404/07/26 -
کنترل SerialPort در سی شارپ
1404/07/26 -
کنترل Splitter در سی شارپ
1404/07/25 -
کنترل WebBrowser در سی شارپ
1404/07/24
اتربیوت (Attribute) در سی شارپ

اتربیوت Attribute در سی شارپ
در سی شارپ، Attributeها ویژگیهایی هستند که به متادیتای کد اضافه میشوند و اطلاعات اضافی در مورد عناصر برنامه (مانند کلاسها، متدها، پراپرتیها و متغیرها) ارائه میدهند.
این ویژگیها معمولاً برای تعیین رفتار خاصی در زمان کامپایل یا اجرا استفاده میشوند.
به عنوان مثال، اتربیوت هایی مانند [Obsolete] برای علامتگذاری متدهای منسوخشده و [Serializable] برای تعیین قابلیت سریالسازی یک کلاس به کار میروند.
برای تعریف یک Attribute سفارشی، باید یک کلاس ایجاد کرد که از System.Attribute ارثبری کند.
سپس این Attribute را میتوان روی عناصر مختلف برنامه اعمال کرد.
به عنوان مثال، در کد زیر یک Attribute سفارشی به نام AuthorAttribute تعریف شده که اطلاعات نویسنده را ذخیره میکند:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AuthorAttribute : Attribute
{
public string Name { get; }
public AuthorAttribute(string name)
{
Name = name;
}
}
[Author("Ali Rezaei")]
public class SampleClass
{
[Author("Sara Ahmadi")]
public void SampleMethod() { }
}
در این مثال، Attribute Author اطلاعات مربوط به نویسنده کلاس و متد را نگه میدارد و از طریق Reflection میتوان این اطلاعات را در زمان اجرا دریافت کرد.
مثال ساده دیگر از Attribute:
using System;
class Program
{
[Obsolete("این متد قدیمی شده است، لطفاً از NewMethod استفاده کنید.")]
static void OldMethod()
{
Console.WriteLine("متد قدیمی");
}
static void NewMethod()
{
Console.WriteLine("متد جدید");
}
static void Main()
{
OldMethod(); // هشدار کامپایلر نمایش داده میشود.
NewMethod();
}
}
در اینجا، Attribute [Obsolete] به متد OldMethod اضافه شده و هشدار میدهد که این متد قدیمی است.
انواع اتربیوت (Attribute) داخلی در سی شارپ
سی شارپ دارای چندین Attribute داخلی است که به برنامهنویسان کمک میکنند. در این بخش، برخی از این Attributeها را بررسی میکنیم.
-
Obsolete
همانطور که در مثال قبل مشاهده کردید، [Obsolete] برای مشخص کردن متدهای منسوخ استفاده میشود.
[Obsolete("این متد دیگر توصیه نمیشود.")] -
Serializable
از این Attribute برای مشخص کردن کلاسهایی که قابلیت سریالسازی دارند، استفاده میشود.
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
این Attribute مشخص میکند که کلاس Person قابل سریالسازی است.
-
DllImport
برای فراخوانی کتابخانههای خارجی مانند DLLهای ویندوز استفاده میشود.
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
public static extern int MessageBox(IntPtr hWnd, string text, string caption, int type);
static void Main()
{
MessageBox(IntPtr.Zero, "سلام دنیا", "پیغام", 0);
}
}
نحوه ساخت Attribute سفارشی در سی شارپ
گاهی اوقات نیاز داریم که Attribute مخصوص به خودمان را ایجاد کنیم.
برای این کار، باید یک کلاس مشتق شده از Attribute بسازیم.
-
ایجاد یک Attribute سفارشی
using System;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyCustomAttribute : Attribute
{
public string Description { get; }
public MyCustomAttribute(string description)
{
Description = description;
}
}
-
استفاده از Attribute سفارشی
[MyCustom("این یک کلاس نمونه با Attribute سفارشی است")]
public class SampleClass
{
[MyCustom("این یک متد نمونه است")]
public void SampleMethod()
{
Console.WriteLine("متد اجرا شد");
}
}
-
خواندن اتربیوت ها در زمان اجرا با Reflection
برای خواندن Attributeها از Reflection استفاده میکنیم.
using System;
using System.Reflection;
class Program
{
static void Main()
{
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(MyCustomAttribute), false);
foreach (MyCustomAttribute attr in attributes)
{
Console.WriteLine($"توضیح کلاس: {attr.Description}");
}
}
}
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
کاربرد اتربیوت (Attribute) در سی شارپ
ttributeها در سی شارپ برای افزودن متادیتا به کد استفاده میشوند و در سناریوهای مختلفی کاربرد دارند، از جمله:
-
کنترل رفتار کامپایلر
با [Obsolete] میتوان متدهای منسوخ را مشخص کرد تا هنگام استفاده از آنها هشدار دریافت شود. -
سریالسازی دادهها
با [Serializable] میتوان یک کلاس را برای تبدیل به فرمتهای مختلف مانند JSON یا XML آماده کرد. -
مدیریت امنیت و دسترسی
با [Authorize] در ASP.NET Core میتوان سطح دسترسی کاربران را کنترل کرد. -
کنترل تستهای واحد
فریمورکهایی مانند xUnit و NUnit از [Fact] و [Test] برای مشخص کردن متدهای تست استفاده میکنند. -
بازتاب (Reflection) و پردازش دادهها
برخی Attributeها مانند [MetadataType] برای تعیین ویژگیهای مدل در Entity Framework به کار میروند.
مثال استفاده از [Obsolete]
class Sample
{
[Obsolete("از متد NewMethod استفاده کنید")]
public void OldMethod() { }
public void NewMethod() { }
}
در این مثال، هنگام استفاده از OldMethod، هشدار دریافت خواهید کرد که متد جدیدی جایگزین آن شده است.
مزایای استفاده از Attribute در سی شارپ
-
Attributeها به برنامهنویسان کمک میکنند تا:
-
اطلاعات اضافی را به کد اضافه کنند.
-
قابلیت پردازش متاداده را فراهم کنند.
-
کدنویسی خواناتر و ساختارمندتری داشته باشند.
-
مدیریت ویژگیهای کلاسها و متدها را بهبود دهند.
مثال پروژهمحور از اتربیوت در سی شارپ
سیستم مدیریت کاربران با Attributeهای سفارشی
در این بخش، یک پروژه ساده برای مدیریت کاربران با استفاده از Attributeهای سفارشی پیادهسازی خواهیم کرد.
-
تعریف Attribute سفارشی برای سطح دسترسی کاربران
ابتدا یک Attribute برای تعیین سطح دسترسی کاربران ایجاد میکنیم.
using System;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class AccessLevelAttribute : Attribute
{
public string Role { get; }
public AccessLevelAttribute(string role)
{
Role = role;
}
}
-
تعریف کلاس مدیریت کاربران
using System;
public class UserManager
{
[AccessLevel("Admin")]
public void DeleteUser()
{
Console.WriteLine("کاربر حذف شد.");
}
[AccessLevel("User")]
public void ViewProfile()
{
Console.WriteLine("نمایش پروفایل کاربر.");
}
}
-
بررسی سطح دسترسی با Reflection
اکنون، متدهایی را برای بررسی سطح دسترسی کاربران پیادهسازی میکنیم.
using System;
using System.Reflection;
class Program
{
static void ExecuteMethodBasedOnRole(object obj, string methodName, string userRole)
{
MethodInfo method = obj.GetType().GetMethod(methodName);
if (method != null)
{
var attribute = (AccessLevelAttribute)method.GetCustomAttribute(typeof(AccessLevelAttribute));
if (attribute != null && attribute.Role == userRole)
{
method.Invoke(obj, null);
}
else
{
Console.WriteLine("دسترسی غیرمجاز");
}
}
else
{
Console.WriteLine("متد یافت نشد.");
}
}
static void Main()
{
UserManager userManager = new UserManager();
ExecuteMethodBasedOnRole(userManager, "DeleteUser", "Admin"); // موفقیتآمیز
ExecuteMethodBasedOnRole(userManager, "DeleteUser", "User"); // دسترسی غیرمجاز
ExecuteMethodBasedOnRole(userManager, "ViewProfile", "User"); // موفقیتآمیز
}
}
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.