Tìm hiểu C# và ứng dụng của C# p 30
Số trang: 9
Loại file: pdf
Dung lượng: 243.53 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 18 Attributes và ReflectionXin đượ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.18.1 AttributesMột attribute...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 30Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh KhangChương 18 Attributes và ReflectionXin đượ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ữngdữ 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.18.1 AttributesMột attribute là một đối tượng, trong đối tượng đó chứa một mẩu dữ liệu, mà lậptrình viên muốn đính kèm với một phần tử (element) nào đó trong ứng dụng. Phầntử (element) mà lập trình viên muốn đính kèm attribute gọi là mục tiêu (target) củaattribute. 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.18.2 Attribute mặc định (intrinsic attributes)Có 2 loại attribute: • Attribute mặc định: là attribute được CLR cung cấp sẵn. • Attribute do lập trình viên định nghĩa (custom attribute)18.2.1 Đích của AttributeMỗ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 đíchBảng 18-1 Các đích của attribute Loại Ý nghĩa All Áp dụng cho tất cà các loại bên dưới Assembly Áp dụng cho chính assembly Class Áp dụng cho một thể hiện của lớp ClassMembers Áp dụng cho các loại từ sau hàng này trở đi 200Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh Khang Constructor Áp dụng với hàm dựng Delegate Áp dụng cho delegate Enum Áp dụng cho kiểu liệt kê Event Áp dụng cho sự kiện Field Áp dụng cho biến thành viên (tĩnh lẫn không tĩnh) Interface Áp dụng cho giao diện Method Áp dụng cho phương thức Module Áp dụng cho module Parameter Áp dụng cho tham số Property Áp dụng cho property ReturnValue Áp dụng cho trị trả về Struct Áp dụng cho cấu trúc18.2.2 Áp dụng AttributeLập trình viên áp dụng attribute lên mục tiêu bằng cách đặt attribute trong ngoặcvuô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 MySerClassAttribute trên báo cho compiler biết rằng lớp MySerClass cần được bảo đảm trongviệc ghi nội dung, trạng thát xuống dĩa từ hay truyền qua mạng.18.3 Attribute do lập trình viên tạo raLậ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ụngchúng vào nơi nào cảm thấy thích hợp.18.3.1 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.AttributeSau đó 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)] 201Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh KhangAttribute “AttributeUsage” trên có mục tiêu áp dụng là Attribute khác: gọi làmeta-attribute.18.3.2 Đặt tên một attributeLập trình viên hoàn toàn tự do trong việc đặt tên cho attribute. Tuy nhiên, compilercủa .NET còn có thêm khả năng tự nối thêm chuỗi “Attribute” vào tên. Điều đó cónghĩa là nếu lập trình viên định nghĩa một attribute có tên là “MyBugFix” thì khitìm kiếm hoặc truy xuất attribute trên, lập trình viên có thể viết tên attribute:“MyBugFix” hoặc “MyBugFixAttribute”. Nếu một attribute có tên là“MyBugFixAttribute” thì lập trình viên cũng có thể ghi tên attribute là“MyBugFix” hoặc “MyBugFixAttribute”.Ví dụ: [MyBugFix(123, Jesse Liberty, 01/01/05, Comment=Off by one)]18.3.3 Khởi tạo AttributeMỗi attribute phải có ít nhất một contructor. Attribute nhận 2 kiểu đối số: kiểu vị trí(positional) và kiểu tên (named).Trong ví dụ MyBugFix ở phần trước, phần tên và ngày tháng là kiểu vị trí, phần ghichú (comment) là kiểu tên.Các đối số kiểu vị trí phải được truyền vào contructor đúng theo thứ tự khai báo. Vídụ: public BugFixAttribute(int bugID, string programmer, ...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 30Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh KhangChương 18 Attributes và ReflectionXin đượ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ữngdữ 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.18.1 AttributesMột attribute là một đối tượng, trong đối tượng đó chứa một mẩu dữ liệu, mà lậptrình viên muốn đính kèm với một phần tử (element) nào đó trong ứng dụng. Phầntử (element) mà lập trình viên muốn đính kèm attribute gọi là mục tiêu (target) củaattribute. 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.18.2 Attribute mặc định (intrinsic attributes)Có 2 loại attribute: • Attribute mặc định: là attribute được CLR cung cấp sẵn. • Attribute do lập trình viên định nghĩa (custom attribute)18.2.1 Đích của AttributeMỗ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 đíchBảng 18-1 Các đích của attribute Loại Ý nghĩa All Áp dụng cho tất cà các loại bên dưới Assembly Áp dụng cho chính assembly Class Áp dụng cho một thể hiện của lớp ClassMembers Áp dụng cho các loại từ sau hàng này trở đi 200Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh Khang Constructor Áp dụng với hàm dựng Delegate Áp dụng cho delegate Enum Áp dụng cho kiểu liệt kê Event Áp dụng cho sự kiện Field Áp dụng cho biến thành viên (tĩnh lẫn không tĩnh) Interface Áp dụng cho giao diện Method Áp dụng cho phương thức Module Áp dụng cho module Parameter Áp dụng cho tham số Property Áp dụng cho property ReturnValue Áp dụng cho trị trả về Struct Áp dụng cho cấu trúc18.2.2 Áp dụng AttributeLập trình viên áp dụng attribute lên mục tiêu bằng cách đặt attribute trong ngoặcvuô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 MySerClassAttribute trên báo cho compiler biết rằng lớp MySerClass cần được bảo đảm trongviệc ghi nội dung, trạng thát xuống dĩa từ hay truyền qua mạng.18.3 Attribute do lập trình viên tạo raLậ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ụngchúng vào nơi nào cảm thấy thích hợp.18.3.1 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.AttributeSau đó 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)] 201Attributes và Reflection Gvhd: Nguyễn Tấn Trần Minh KhangAttribute “AttributeUsage” trên có mục tiêu áp dụng là Attribute khác: gọi làmeta-attribute.18.3.2 Đặt tên một attributeLập trình viên hoàn toàn tự do trong việc đặt tên cho attribute. Tuy nhiên, compilercủa .NET còn có thêm khả năng tự nối thêm chuỗi “Attribute” vào tên. Điều đó cónghĩa là nếu lập trình viên định nghĩa một attribute có tên là “MyBugFix” thì khitìm kiếm hoặc truy xuất attribute trên, lập trình viên có thể viết tên attribute:“MyBugFix” hoặc “MyBugFixAttribute”. Nếu một attribute có tên là“MyBugFixAttribute” thì lập trình viên cũng có thể ghi tên attribute là“MyBugFix” hoặc “MyBugFixAttribute”.Ví dụ: [MyBugFix(123, Jesse Liberty, 01/01/05, Comment=Off by one)]18.3.3 Khởi tạo AttributeMỗi attribute phải có ít nhất một contructor. Attribute nhận 2 kiểu đối số: kiểu vị trí(positional) và kiểu tên (named).Trong ví dụ MyBugFix ở phần trước, phần tên và ngày tháng là kiểu vị trí, phần ghichú (comment) là kiểu tên.Các đối số kiểu vị trí phải được truyền vào contructor đúng theo thứ tự khai báo. Vídụ: public BugFixAttribute(int bugID, string programmer, ...
Tìm kiếm theo từ khóa liên quan:
Tìm hiểu ngôn ngữ C# C# và .Net Framework lập trình c# ngôn ngữ C# tài liệu c#Gợi ý tài liệu liên quan:
-
161 trang 129 1 0
-
Giáo trình Kỹ thuật lập trình nâng cao (Ngành: Tin học ứng dụng) - CĐ Kinh tế Kỹ thuật TP.HCM
119 trang 66 0 0 -
33 trang 65 0 0
-
thủ thuật windows XP hay nhất phần 2
14 trang 41 0 0 -
1 trang 41 0 0
-
Bài giảng Lập trình Windows Form với C#: Chương 1 - Lê Thị Ngọc Hạnh
56 trang 33 0 0 -
Tự học C# bằng hình ảnh cho người mới bắt đầu: Phần 1
88 trang 30 0 0 -
hướng dẫn sử dụng Rhino Ceros phần 6
12 trang 26 0 0 -
1 trang 25 0 0
-
accounting reference desktop 2002 phần 6
64 trang 25 0 0