2011-08-26 46 views
5

Tôi là người mới sử dụng C#. Thấy đoạn mã này trong mã nguồn mởTính năng C# này có tên không và nó hoạt động như thế nào?

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; } 

Đường bắt đầu bằng dấu ngoặc vuông mở, chúng đang làm gì? tham chiếu đến thuộc tính của đối tượng cha mẹ? Nếu vậy, tại sao họ phải neccessry? Có một tên kiểu mã hóa này không? Cảm ơn bạn!

+2

Đó là các thuộc tính. –

+1

có thể trùng lặp của [.NET: Thuộc tính là gì?] (Http://stackoverflow.com/questions/20346/net-what-are-attributes) –

Trả lời

4

Chúng được gọi là thuộc tính - xem MSDN.

4

Đọc tất cả về C# Attributes. Về cơ bản, chúng là các thể hiện của các lớp gắn với các thuộc tính/phương thức/lớp/các phần tử mã khác. Trong trường hợp này, chỉ đơn giản là, bạn đã xác định một trường mới có tên là StaffID của loại System.Nullable<...> có một đối tượng DataMap được gắn với nó.

10

Tất cả điều này đều thuộc một khái niệm được gọi là lập trình meta. Có một cuốn sách được gọi là Metraprogramming in .NET (Manning). Về cơ bản, bạn đang chú thích mã của mình bằng dữ liệu mà sau này có thể được giải thích khi chạy bằng một số mã khác thông qua sự phản chiếu. Điều này cũng phổ biến trong Java và Ruby. Bạn sẽ thấy nó trong ASP.NET MVC, WCF, và nhiều hơn nữa. Nó cũng giới thiệu một thực hành lập trình khác được gọi là Lập trình khai báo. Bạn nói "những gì bạn muốn làm", và để cái gì khác xác định "làm thế nào". Nó thực sự lớn trong các ngôn ngữ lập trình hàm và chỉ lập trình nói chung cho vấn đề đó. Xem bài đăng này về cách phân tích cú pháp các thuộc tính. How do I GetCustomAttributes?

+2

Đây là câu trả lời đúng IMO. –

Các vấn đề liên quan