2011-08-26 15 views
5

मैं एक सी # नौसिखिया हूँ। एक खुला स्रोत में कोड के इस टुकड़ेक्या इस सी # सुविधा का नाम है और यह क्या करता है?

public class Staff : BusinessObjectBase 
{ 

    /// <summary> 
    /// Column: StaffID(Identity)(Primary Key), Allow DBNull=False 
    /// </summary> 
    [DataMap("StaffID", IsIdentity=true, IsReadOnly=true, IsKey=true)] 
    public System.Nullable<System.Int32> StaffID { get; set; } 

    /// <summary> 
    /// Column: TeamID, Allow DBNull=True 
    /// </summary> 
    [DataMap("TeamID", AllowDBNull=true)] 
    public System.Nullable<System.Int32> TeamID { get; set; } 
लाइनों

खुला वर्ग कोष्ठक के साथ शुरू, वे क्या कर रहे देखा था? मूल वस्तु के गुणों का संदर्भ? यदि हां, तो वे क्यों विफल हैं? क्या कोडिंग की इस शैली का नाम है? धन्यवाद!

+2

वे विशेषताएँ हैं। –

+1

संभावित डुप्लिकेट [.NET: विशेषताएं क्या हैं?] (Http://stackoverflow.com/questions/20346/net-what-are-attributes) –

उत्तर

4

जिन्हें गुण कहा जाता है - MSDN देखें।

4

C# Attributes के बारे में सभी पढ़ें। वे मूल रूप से कक्षाओं के उदाहरण हैं जो स्वयं को अन्य गुणों/विधियों/कक्षाओं/कोड तत्वों से जोड़ते हैं। इस मामले में, बस डालें, आपने नामक System.Nullable<...> नामक एक नया फ़ील्ड परिभाषित किया है जिसमें DataMap ऑब्जेक्ट संलग्न है।

10

यह सब एक अवधारणा के तहत आता है जिसे मेटाप्रोग्रामिंग कहा जाता है। .NET (Manning) में मेट्राप्रोग्रामिंग नामक एक पुस्तक है। आप मूल रूप से डेटा के साथ अपना कोड एनोटेट कर रहे हैं जिसे बाद में किसी अन्य कोड द्वारा प्रतिबिंब के माध्यम से रनटाइम पर व्याख्या किया जा सकता है। यह जावा और रूबी में भी लोकप्रिय है। आप इसे एएसपी.नेट एमवीसी, डब्ल्यूसीएफ, और बहुत कुछ में देखेंगे। यह एक अन्य प्रोग्रामिंग अभ्यास भी पेश करता है जिसे घोषणात्मक प्रोग्रामिंग कहा जाता है। आप कहते हैं "आप क्या करना चाहते हैं", और कुछ और "निर्धारित" निर्धारित करने दें। यह कार्यात्मक प्रोग्रामिंग भाषाओं में वास्तव में बड़ा है और उस मामले के लिए सामान्य रूप से प्रोग्रामिंग है। गुणों को पार्स करने के तरीके के बारे में इस पोस्ट को देखें। How do I GetCustomAttributes?

+2

यह सही उत्तर आईएमओ है। –

संबंधित मुद्दे