چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

اتریبیوت Obsolete در زبان سی‌شارپ

ObsoleteAttribute به عنوان یک اتربیوت که در فضا نام System واقع است توسط کلمه کلیدی Sealed مهروموم می‌باشد. در صورت استفاده بر روی عناصر کلاس، نوع داده شمارشی، سازنده، متد، پراپرتی، فیلد و ... به کاربر استفاده کننده اطلاع می‌دهد که این عنصر در نسخه‌های آینده منسوخ خواهد شد و یا منسوخ گردیده است.

  [AttributeUsage(AttributeTargets.Class | 
                  AttributeTargets.Struct | 
                  AttributeTargets.Enum | 
                  AttributeTargets.Constructor | 
                  AttributeTargets.Method | 
                  AttributeTargets.Property | 
                  AttributeTargets.Field | 
                  AttributeTargets.Event | 
                  AttributeTargets.Interface | 
                  AttributeTargets.Delegate, Inherited = false)]

کلاس ObsoleteAttribute شامل سازنده پیشفرض و دو سازنده همراه پارامتر می‌باشد. با استفاده از اتربیوت Obsolete بر روی عناصر به صورت پیشفرض، سازنده پیشفرض فراخوانی خواهد شد. مقدار پراپرتی IsError در سازنده پیشفرض برابر است با مقدار False:

public ObsoleteAttribute()
{
    this._message = (string)null;
    this._error = false;
}

public ObsoleteAttribute(string message)
{
    this._message = message;
    this._error = false;
}

public ObsoleteAttribute(string message, bool error)
{
    this._message = message;
    this._error = error;
}

مثال:

ممکن است تابع الحاقی Any در حال حاضر در پروژه مورد استفاده قرار می‌گیرد اما بنا به دلایل نیاز خواهد بود منطق بدنه اجرای تابع Any تغییر یابد. پروژه اگر توسط تیم در حال توسعه باشد نیاز خواهد بود به سایر توسعه‌دهندگان اطلاع رسانی نماید تابع Any منسوخ گردید و لازم است تابع جایگزین استفاده نمایند در این حالت می‌توان اتربیوت Obsolete را بکار برد:

[Obsolete(message: "Please use SafeAny.", error: true)]
public static bool Any<TSource>(this IEnumerable<TSource> source)
{
    // Your code ...
}

اگر مقدار پراپرتی IsError برابر با True شود با خطا کامپایلری مواجه خواهید شد در غیر اینصورت هشدار 'Program.Any<TSource>(IEnumerable<TSource>)' is obsolete در پنجره Warning ظاهر می‌گردد.

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.