Attributes và Reflection
Xin được nhắc lại rằng một ứng dụng .NET bao gồm mã chương trình, dữ liệu, metadata. Metadata chính là thông tin về dữ liệu mà ứng dụng sử dụng như kiểu dữ liệu, mã thực thi, assembly,… A t t r i b ut e s là cơ chế để tạo ra ...
Xin được nhắc lại rằng một ứng dụng .NET bao gồm mã chương trình, dữ liệu, metadata. Metadata chính là thông tin về dữ liệu mà ứng dụng sử dụng như kiểu dữ liệu, mã thực thi, assembly,…
Attributes là cơ chế để tạo ra metadata. Ví dụ như chỉ thị cho trình biên dịch, những dữ liệu khác liên quan đến dữ liệu, phương thức, lớp, …
Reflection là quá trình một ứng dụng đọc lại metadata của chính nó để có cách thể hiện, ứng xử thích hợp cho từng người dùng.
Một attribute là một đối tượng, trong đối tượng đó chứa một mẩu dữ liệu, mà lập trình viên muốn đính kèm với một phần tử (element) nào đó trong ứng dụng. Phần tử (element) mà lập trình viên muốn đính kèm attribute gọi là mục tiêu (target) của attribute. Ví dụ attribute:
[NoIDispatch]
được đính kèm với một lớp hay một giao diện để nói rằng lớp đích (target class) nên được thừa kế từ giao diện IUnknown chứ không phải thừa kế từ IDispatch.
Có 2 loại attribute:
- Attributemặcđịnh: là attribute được CLR cung cấp sẵn.
- Attribute do lập trình viên định nghĩa (customattribute)
Đích của Attribute
Mỗi attribute chỉ ảng hưởng đến một đích (target) mà nó khai báo. Đích có thể là lớp, giao diện, phương thức … Bảng sau liệt kê tất cả các đích
Các đích của attributeÁp dụng Attribute
Lập trình viên áp dụng attribute lên mục tiêu bằng cách đặt attribute trong ngoặc vuông
[]liền trước mục tiêu. Ví dụ attribute “Assembly” được áp dụng:
[assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile(“keyfile.snk”)]
Cách sau cũng tương đương với cách trên:
[assembly: AssemblyDelaySign(false), assembly: AssemblyKeyFile(“keyfile.snk”)]
Attribute thường dùng trong lập trình C# là “Serializable”
[serializable] class MySerClass
Attribute trên báo cho compiler biết rằng lớp MySerClasscần được bảo đảm trong việc ghi nội dung, trạng thát xuống dĩa từ hay truyền qua mạng.
Lập trình viên hoàn toàn tự do trong việc tạo ra các attribute riêng và đem sử dụng chúng vào nơi nào cảm thấy thích hợp.
Khai báo Attribute tự tạo
Đầu tiên là thừa kế một lớp từ lớp System.Attribute:
Public class XYZ : System.Attribute
Sau đó là báo cho compiler biết attribute này có thể đem áp dụng lên mục tiêu nào.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
Attribute “AttributeUsage”trên có mục tiêu áp dụng là Attribute
- 1 Kiểm chứng tính đúng có điều kiện
- 2 Sự cần thiết phải tạo động lực cho người lao động
- 3 Khái quát chung về ngân hàng thương mại.
- 4 Nội dung của giáo trình
- 5 các hệ thống tự động lò có bao hơi
- 6 Mô hình dữ liệu quan hệ của e.f.codd
- 7 Tinh thể quang tử
- 8 Công ty đại chúng
- 9 Khái niệm, vai trò, hình thức và phương thức đấu thầu
- 10 Phân lập và cấy chuyển nấm