2011-08-26 39 views
5

我是C#新手。在開源代碼中看到這段代碼這個C#特性有一個名字,它有什麼作用?

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。它們基本上是將其自身附加到其他屬性/方法/類/代碼元素的類的實例。在這種情況下,簡單地說,您定義了一個名爲StaffID的新字段,其類型爲System.Nullable<...>,其中附帶有一個DataMap對象。

10

這一切都屬於一個稱爲元編程的概念。有一本書叫做Metraprogramming in .NET(Manning)。你基本上用數據註釋你的代碼,這些數據稍後可以通過反射在其他代碼上在運行時解釋。這在Java和Ruby中也很流行。你會在ASP.NET MVC,WCF等等中看到它。它還介紹了另一種稱爲聲明性編程的編程實踐。你說「你想做什麼」,並讓其他東西確定「如何」。它在函數式編程語言中非常重要,並且只是針對這個問題進行編程。看到這篇文章關於如何解析屬性。 How do I GetCustomAttributes?

+2

這是IMO的正確答案。 –

相關問題