परिचय
प्रीडिफाइन्ड एट्रिब्यूट्स कंपाइलर/रनटाइम को विशेष निर्देश देते हैं।
1. AttributeUsage
कस्टम एट्रिब्यूट क्लास पर लागू होता है, यह नियंत्रित करता है कि एट्रिब्यूट कहाँ उपयोग किया जा सकता है।
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
public class MyAttribute : Attribute { }
AttributeTargets: All, Class, Method, Property, Field, Parameter, Assembly, आदि।AllowMultiple: एक ही एलिमेंट पर एकाधिक बार अनुमति।Inherited: डेराइव्ड क्लासेस पर विरासत।
2. Conditional
मेथड कॉल को सशर्त रूप से कंपाइल करता है (सिम्बल परिभाषित होने पर)।
[Conditional("DEBUG")]
public void Log(string msg) { Console.WriteLine(msg); }
// कॉल साइट पर:
// #define DEBUG होने पर ही कॉल कंपाइल होता है
Log("Debug message");
3. Obsolete
पुराने API को चिह्नित करता है; कंपाइलर वार्निंग/एरर देता है।
[Obsolete("Use NewMethod instead", true)] // true = एरर, false = वार्निंग
public void OldMethod() { }
public void NewMethod() { }
उपयोग
OldMethod(); // कंपाइल एरर: 'OldMethod' is obsolete: 'Use NewMethod instead'