C# và các lớp cơ sở Reflection – Phần 1
Số trang: 10
Loại file: pdf
Dung lượng: 112.18 KB
Lượt xem: 17
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:
Reflection là 1 thuật ngữ bao phủ 1 lớp cơ sở khác của .NET mà cho phép ta tìm ra thông tin về các kiểu trong chương trình. hầu hết những lớp này nằm trong namespace System.Reflection, và có 1 số lớn các lớp khác trong namespace này. trong phần này ta sẽ tìm hiểu lớp system.Type , mà cho phép ta truy nhập thông tin liên quan đến việc định nghĩa bất kì kiểu dữ liệu nào được cho.tiếp theo ta sẽ tìm hiểu lớp System.Reflection.assembly mà cho phép ta truy xuất thông tin về assembly được cho,...
Nội dung trích xuất từ tài liệu:
C# và các lớp cơ sở Reflection – Phần 1 C# và các lớp cơ sở Reflection – Phần 1Reflection là 1 thuật ngữ bao phủ 1 lớp cơ sở khác của .NET mà cho phép tatìm ra thông tin về các kiểu trong chương trình. hầu hết những lớp này nằmtrong namespace System.Reflection, và có 1 số lớn các lớp khác trongnamespace này.trong phần này ta sẽ tìm hiểu lớp system.Type , mà cho phép ta truy nhậpthông tin liên quan đến việc định nghĩa bất kì kiểu dữ liệu nào được cho.tiếptheo ta sẽ tìm hiểu lớp System.Reflection.assembly mà cho phép ta truy xuấtthông tin về assembly được cho, hoặc tải assembly đó vào trong chươngtrình của ta.cuối cùng ta sẽ xét ví dụ WhatsNewAttributesLớp System.TypeTa đã dùng lớp Type 1 số lần để lấy tên của 1 kiểu :Type t = typeof(double)Mặc dù ta cho rằng type là 1 lớp nhưng thực sự nó là 1 lớp cơ sở trừu tượng,bất cứ khi nào ta khởi tạo 1 đối tượng type ta thực sự khởi tạo 1 lớp dẫn xuấtcủa type.type có 1 lớp dẫn xuất đáp ứng mỗi kiểu dữ liệu.có 3 cách lấy 1tham chiếu Type mà chuyển cho kiểu dữ liệu bất kì: - Dùng tác tử typeof. tác tử này lấy tên của kiểu như là thông số . - Dùng phương thức Gettype() , mà tất cả các lớp kế thừa từSystem.Object: double d = 10;Type t = d.GetType(); Gettype() hữu ích khi ta có 1 tham chiếu đối tượng và không chắcđối tượng thực sự là thể hiện của lớp nào - Ta cũng có thể gọi phương thức static của lớp type ,getType(): Type t = Type.GetType(System.Double);Các thuộc tính của Type1. 1 số thuộc tính lấy chuỗi chứa các tên khác nhau kết hợp với lớp :Thuộc tính Trả về tên của kiểu dữ liệuName tên đầy đủ bao gồm cả namespaceFullNameThuộc tính Trả về tên namespace của kiểu dữ liệu.Namespace2. Có thể lấy những tham chiếu đến kiểu những đối tượng mà trình bày cáclớp có liên quan :Thuộc tính Kiểu tham chiếu trả về tương ứng với kiểu cơ sở trực tiếp của kiểu nàyBaseTypeUnderlyingSystemType kiểu mà kiểu này ánh xạ trong thời gian chạy .NET3. 1 số thuộc tính luận lý chỉ định liệu có phải là kiểu nào đó hay không vídụ là 1 lớp hay 1 kiểu liệt kê ... những thuộc tính này bao gồm : IsAbstract,IsArray, IsClassembly,IsEnum, IsInterface, IsPointer, IsPrimitive ( 1trong những kiểu dữ liệu bẩm sinh được định nghĩa trước), IsPublic,IsSealed, and IsValueType.Ví dụ :dùng kiểu dữ liệu bẩm sinh :Type intType = typeof(int);Console.WriteLine(intType.IsAbstract); // writesfalseConsole.WriteLine(intType.IsClassembly); // writes falseConsole.WriteLine(intType.IsEnum); // writes falseConsole.WriteLine(intType.IsPrimitive); // writes trueConsole.WriteLine(intType.IsValueType); // writes truehoặc dùng lớp Vector :Type intType = typeof(Vector);Console.WriteLine(intType.IsAbstract);//writes falseConsole.WriteLine(intType.IsClassembly); // writes trueConsole.WriteLine(intType.IsEnum); // writes falseConsole.WriteLine(intType.IsPrimitive); // writes falseConsole.WriteLine(intType.IsValueType); // writes falseCác phương thức :Hầu hết các phương thức của System.Type được sử dụng để chứa chi tiết cácthành viên của kiểu dữ liệu tương ứng - hàm dựng ,thuộc tính,phương thức ,biến cố...có nhiều phương thức nhưng tất cả chúng đều theo nền chung. vídụ , có hai phương thức mà nhận chi tiết phương thức của kiểu dữ liệu :getmethod() và getmethods(). getmethod() trả về 1 tham chiếu đến đối tượngSystem.Reflection.MethodInfo mà chứa chi tiết của 1 phương thức.getmethods() trả vế 1 mảng tham chiếu. điểm khác là getmethods() trả vềchi tiết của tất cả phương thức , trong khi getmethod() trả về chi tiết của chỉmột phương thức được chỉ định trong danh sách thông số.cả hai phương thứcđều overloads mà lấy thêm 1 thông số , BindingFlags liệt kê giá trị chỉ địnhthành viên nào nên được trả về- ví dụ như trả về 1 thành viên public, 1 thànhviên instance, thành viên static ...Ví dụ phương thức getmethods() không lấy thông số nào và trả về chi tiếtcủa tất cả phương thức thành viên của kiểu dữ liệu :Type t = typeof(double);MethodInfo [] methods = t.GetMethods();foreach (MethodInfo nextMethod in methods){// etc.Kiểu đối tượng trả về Các phương thức (phương thức số nhiều ( có s ở cuối tên ) trả về 1 mảng )ConstructorInfo GetConstructor(), GetConstructors()EventInfo GetEvent(), GetEvents()FieldInfo GetField(), GetFields()InterfaceInfo GetInterface(), GetInterfaces()Kiểu đối tượng trả về Các phương thức (phương thức số nhiều ( có s ở cuối tên ) trả về 1 mảng )MemberInfo GetMember(), GetMembers()MethodInfo GetMethod(), GetMethods()PropertyInfo GetProperty(), GetProperties()Phương thức getmember() và getmembers() trả ...
Nội dung trích xuất từ tài liệu:
C# và các lớp cơ sở Reflection – Phần 1 C# và các lớp cơ sở Reflection – Phần 1Reflection là 1 thuật ngữ bao phủ 1 lớp cơ sở khác của .NET mà cho phép tatìm ra thông tin về các kiểu trong chương trình. hầu hết những lớp này nằmtrong namespace System.Reflection, và có 1 số lớn các lớp khác trongnamespace này.trong phần này ta sẽ tìm hiểu lớp system.Type , mà cho phép ta truy nhậpthông tin liên quan đến việc định nghĩa bất kì kiểu dữ liệu nào được cho.tiếptheo ta sẽ tìm hiểu lớp System.Reflection.assembly mà cho phép ta truy xuấtthông tin về assembly được cho, hoặc tải assembly đó vào trong chươngtrình của ta.cuối cùng ta sẽ xét ví dụ WhatsNewAttributesLớp System.TypeTa đã dùng lớp Type 1 số lần để lấy tên của 1 kiểu :Type t = typeof(double)Mặc dù ta cho rằng type là 1 lớp nhưng thực sự nó là 1 lớp cơ sở trừu tượng,bất cứ khi nào ta khởi tạo 1 đối tượng type ta thực sự khởi tạo 1 lớp dẫn xuấtcủa type.type có 1 lớp dẫn xuất đáp ứng mỗi kiểu dữ liệu.có 3 cách lấy 1tham chiếu Type mà chuyển cho kiểu dữ liệu bất kì: - Dùng tác tử typeof. tác tử này lấy tên của kiểu như là thông số . - Dùng phương thức Gettype() , mà tất cả các lớp kế thừa từSystem.Object: double d = 10;Type t = d.GetType(); Gettype() hữu ích khi ta có 1 tham chiếu đối tượng và không chắcđối tượng thực sự là thể hiện của lớp nào - Ta cũng có thể gọi phương thức static của lớp type ,getType(): Type t = Type.GetType(System.Double);Các thuộc tính của Type1. 1 số thuộc tính lấy chuỗi chứa các tên khác nhau kết hợp với lớp :Thuộc tính Trả về tên của kiểu dữ liệuName tên đầy đủ bao gồm cả namespaceFullNameThuộc tính Trả về tên namespace của kiểu dữ liệu.Namespace2. Có thể lấy những tham chiếu đến kiểu những đối tượng mà trình bày cáclớp có liên quan :Thuộc tính Kiểu tham chiếu trả về tương ứng với kiểu cơ sở trực tiếp của kiểu nàyBaseTypeUnderlyingSystemType kiểu mà kiểu này ánh xạ trong thời gian chạy .NET3. 1 số thuộc tính luận lý chỉ định liệu có phải là kiểu nào đó hay không vídụ là 1 lớp hay 1 kiểu liệt kê ... những thuộc tính này bao gồm : IsAbstract,IsArray, IsClassembly,IsEnum, IsInterface, IsPointer, IsPrimitive ( 1trong những kiểu dữ liệu bẩm sinh được định nghĩa trước), IsPublic,IsSealed, and IsValueType.Ví dụ :dùng kiểu dữ liệu bẩm sinh :Type intType = typeof(int);Console.WriteLine(intType.IsAbstract); // writesfalseConsole.WriteLine(intType.IsClassembly); // writes falseConsole.WriteLine(intType.IsEnum); // writes falseConsole.WriteLine(intType.IsPrimitive); // writes trueConsole.WriteLine(intType.IsValueType); // writes truehoặc dùng lớp Vector :Type intType = typeof(Vector);Console.WriteLine(intType.IsAbstract);//writes falseConsole.WriteLine(intType.IsClassembly); // writes trueConsole.WriteLine(intType.IsEnum); // writes falseConsole.WriteLine(intType.IsPrimitive); // writes falseConsole.WriteLine(intType.IsValueType); // writes falseCác phương thức :Hầu hết các phương thức của System.Type được sử dụng để chứa chi tiết cácthành viên của kiểu dữ liệu tương ứng - hàm dựng ,thuộc tính,phương thức ,biến cố...có nhiều phương thức nhưng tất cả chúng đều theo nền chung. vídụ , có hai phương thức mà nhận chi tiết phương thức của kiểu dữ liệu :getmethod() và getmethods(). getmethod() trả về 1 tham chiếu đến đối tượngSystem.Reflection.MethodInfo mà chứa chi tiết của 1 phương thức.getmethods() trả vế 1 mảng tham chiếu. điểm khác là getmethods() trả vềchi tiết của tất cả phương thức , trong khi getmethod() trả về chi tiết của chỉmột phương thức được chỉ định trong danh sách thông số.cả hai phương thứcđều overloads mà lấy thêm 1 thông số , BindingFlags liệt kê giá trị chỉ địnhthành viên nào nên được trả về- ví dụ như trả về 1 thành viên public, 1 thànhviên instance, thành viên static ...Ví dụ phương thức getmethods() không lấy thông số nào và trả về chi tiếtcủa tất cả phương thức thành viên của kiểu dữ liệu :Type t = typeof(double);MethodInfo [] methods = t.GetMethods();foreach (MethodInfo nextMethod in methods){// etc.Kiểu đối tượng trả về Các phương thức (phương thức số nhiều ( có s ở cuối tên ) trả về 1 mảng )ConstructorInfo GetConstructor(), GetConstructors()EventInfo GetEvent(), GetEvents()FieldInfo GetField(), GetFields()InterfaceInfo GetInterface(), GetInterfaces()Kiểu đối tượng trả về Các phương thức (phương thức số nhiều ( có s ở cuối tên ) trả về 1 mảng )MemberInfo GetMember(), GetMembers()MethodInfo GetMethod(), GetMethods()PropertyInfo GetProperty(), GetProperties()Phương thức getmember() và getmembers() trả ...
Tìm kiếm theo từ khóa liên quan:
lập trình tài liệu lập trình kỹ thuật lập trình giáo trình C ngôn ngữ lập trình C tự học lập trình với CTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 278 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 218 0 0 -
101 trang 205 1 0
-
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 204 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 175 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 156 0 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 151 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 137 0 0 -
161 trang 134 1 0
-
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 126 0 0