C# và Các Lớp Đối Tượng part 6
Số trang: 10
Loại file: pdf
Dung lượng: 163.68 KB
Lượt xem: 6
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 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.
Nội dung trích xuất từ tài liệu:
C# và Các Lớp Đối Tượng part 6ReflectionReflection 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ôngtin về các kiểu trong chương trình. hầu hết những lớp này nằm trong namespaceSystem.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ênquan đế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ớpSystem.Reflection.assembly mà cho phép ta truy xuất thông tin về assembly được cho,hoặc tải assembly đó vào trong chương trì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ứ khinà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ất của type.type có 1 lớpdẫn xuất đáp ứng mỗi kiểu dữ liệu.có 3 cách lấy 1 tham chiếu Type mà chuyển cho kiểudữ 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ượngthự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ềName tên của kiểu dữ liệuFullName tên đầy đủ bao gồm cả namespaceNamespace tên namespace của kiểu dữ liệu.2. Có thể lấy những tham chiếu đến kiểu những đối tượng mà trình bày các lớp có liênquan :Thuộc tính Kiểu tham chiếu trả về tương ứng vớiBaseType kiểu cơ sở trực tiếp của kiểu nàyUnderlyingSystemType 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 hay1 kiểu liệt kê ... những thuộc tính này bao gồm : IsAbstract, IsArray,IsClassembly,IsEnum, IsInterface, IsPointer, IsPrimitive ( 1 trong những kiểu dữ liệubẩ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); // writes falseConsole.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ác thành viêncủ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ềuphươ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ậnchi tiết phương thức của kiểu dữ liệu : getmethod() và getmethods(). getmethod() trả về 1tham chiếu đến đối tượng System.Reflection.MethodInfo mà chứa chi tiết của 1 phươngthức .getmethods() trả vế 1 mảng tham chiếu. điểm khác là getmethods() trả về chi tiếtcủ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 1thông số , BindingFlags liệt kê giá trị chỉ định thành viên nào nên được trả về- ví dụ nhưtrả về 1 thành viên public, 1 thành viê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ết củ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()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 )FieldInfo GetField(), GetFields()InterfaceInfo GetInterface(), GetInterfaces()MemberInfo GetMember(), GetMembers()MethodInfo GetMethod(), GetMethods()PropertyInfo GetProperty(), GetProperties()Phương thức getmember() và getmembers() trả về chi tiết của bất kì hay tất cả thành viêncủa kiểu dữ liệu không cần biết đó là hàm dựng hay thuộc tính phương thức..Ví dụ TypeViewQua ví dụ này ta có ...
Nội dung trích xuất từ tài liệu:
C# và Các Lớp Đối Tượng part 6ReflectionReflection 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ôngtin về các kiểu trong chương trình. hầu hết những lớp này nằm trong namespaceSystem.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ênquan đế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ớpSystem.Reflection.assembly mà cho phép ta truy xuất thông tin về assembly được cho,hoặc tải assembly đó vào trong chương trì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ứ khinà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ất của type.type có 1 lớpdẫn xuất đáp ứng mỗi kiểu dữ liệu.có 3 cách lấy 1 tham chiếu Type mà chuyển cho kiểudữ 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ượngthự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ềName tên của kiểu dữ liệuFullName tên đầy đủ bao gồm cả namespaceNamespace tên namespace của kiểu dữ liệu.2. Có thể lấy những tham chiếu đến kiểu những đối tượng mà trình bày các lớp có liênquan :Thuộc tính Kiểu tham chiếu trả về tương ứng vớiBaseType kiểu cơ sở trực tiếp của kiểu nàyUnderlyingSystemType 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 hay1 kiểu liệt kê ... những thuộc tính này bao gồm : IsAbstract, IsArray,IsClassembly,IsEnum, IsInterface, IsPointer, IsPrimitive ( 1 trong những kiểu dữ liệubẩ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); // writes falseConsole.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ác thành viêncủ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ềuphươ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ậnchi tiết phương thức của kiểu dữ liệu : getmethod() và getmethods(). getmethod() trả về 1tham chiếu đến đối tượng System.Reflection.MethodInfo mà chứa chi tiết của 1 phươngthức .getmethods() trả vế 1 mảng tham chiếu. điểm khác là getmethods() trả về chi tiếtcủ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 1thông số , BindingFlags liệt kê giá trị chỉ định thành viên nào nên được trả về- ví dụ nhưtrả về 1 thành viên public, 1 thành viê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ết củ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()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 )FieldInfo GetField(), GetFields()InterfaceInfo GetInterface(), GetInterfaces()MemberInfo GetMember(), GetMembers()MethodInfo GetMethod(), GetMethods()PropertyInfo GetProperty(), GetProperties()Phương thức getmember() và getmembers() trả về chi tiết của bất kì hay tất cả thành viêncủa kiểu dữ liệu không cần biết đó là hàm dựng hay thuộc tính phương thức..Ví dụ TypeViewQua ví dụ này ta có ...
Tìm kiếm theo từ khóa liên quan:
máy tính mạng máy tính internet C# ngôn ngữ C# ngôn ngữ ngôn ngữ lập trình lập trình phần mềm file ứng dụngGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 273 0 0 -
Giáo án Tin học lớp 9 (Trọn bộ cả năm)
149 trang 264 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 264 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 264 0 0 -
Ngân hàng câu hỏi trắc nghiệm môn mạng máy tính
99 trang 251 1 0 -
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 246 0 0 -
Bài giảng: Lịch sử phát triển hệ thống mạng
118 trang 245 0 0 -
47 trang 238 3 0
-
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 234 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0