Các bài tập Microsoft .NET 101 Ghi chú Nếu sau khi Unzip source file và load project vào, bạn dùng IDE Menu command Build | Rebuild Solution để compile lại hết các modules nhưng gặp error về references thì hãy làm như sau: • Trong Solution Explorer click các tree nodes references để tìm các references có dấu chấm thang trong tam giác vàng và remove chúng. • Dùng Menu command Project | Add Reference để chọn *.dll lại từ một \bin subfolder. • Rebuild Solution. Nếu bạn dùng chữ Việt Unicode trong program thì nhớ set up Advanced Save Option với Menu command File như trong hình dưới đây: Các bài tập Microsoft .NET 102 Khi Dialog hiện ra, bạn chọn Unicode (UTF-8) cho Encoding: Nếu bạn không thấy có menuItem Advanced Save Option trong Menu File thì cứ dùng menuItem Save As rồi click lên combo box Save phía dưới, bên phải của Save File As Dialog rồi chọn Save with Encoding như trong hình dưới đây: Các bài tập Microsoft .NET 103 Nếu bạn quên set up Advanced Save Option như trên, chữ Việt sẽ bị lưu trử dưới dạng ANSI nên một số sẽ mất dấu chữ Việt và thay vào đó bằng những dấu ?. Shared Events Events có thể được declared là Shared. Shared methods chỉ có thể raise shared events, chúng không thể raise non-shared events. Thí dụ như: Public Class NguồnEvent Shared Event EventDùngChoSharedMethods() Public Shared Sub DùngChung() RaiseEvent EventDùngChoSharedMethods() End Sub End Class Một shared event có thể được raised bởi cả shared methods lẫn non- shared methods: Public Class NguồnEvent Public Event TheEvent() Các bài tập Microsoft .NET 104 Shared Event EventDùngChoSharedMethods() Public Shared Sub DùngChung() RaiseEvent EventDùngChoSharedMethods() End Sub Public Sub LàmViệc() RaiseEvent TheEvent() RaiseEvent EventDùngChoSharedMethods() End Sub End Class Nếu bạn tìm cách raise một non-shared event từ một shared method thì sẽ bị syntax error. Early Binding hay Late Binding (Hiệu lực Sớm hay Trễ) Early Binding có nghĩa là program biết rõ ngay từ đầu loại Object (thuộc Class nào) sẽ được dùng trong hoàn cảnh nào. Nó cho phép IntelliSense hiển thị cho ta thấy những class members nào ta có thể dùng và compiler kiểm xem những methods ta dùng có hiện hữu không. Early Binding code được compiled ra IL rất hiệu năng vì compiler biết rõ ràng data types của các parameters. Ngược lại Late Binding có nghĩa là ta làm việc cách linh động với một Object lúc run-time, tức là program không biết trước Object ấy thuộc loại nào. Late Binding cho ta sự uyển chuyển chỉ làm sao Object cung cấp đúng method cần thiết là đủ. Do đó, ta không hưởng được sự sang trọng IntelliSense cung cấp và compiler không thể kiểm soát loại Object trước dùm cho ta được. Mặc dầu Late Binding code chạy chậm hơn nhưng nó cho ta sự tự do giống như khi làm việc ngoài đời, để đến giờ chót mới xác nhận. By Default, mọi objects trong VB.NET đều là Late Bound. Visual Studio.NET IDE với Option Strict Off by default áp đặt luật đó. Nếu muốn áp đặt Early Binding ta cần phải nhét câu Option Strict On ở đầu một source file. Các bài tập Microsoft .NET 105 Dùng Object Type Ta có Late Binding khi compiler không thể xác định loại Object ta đang gọi. Ta có thể thực hiện điều này bằng cách dùng Object Type để tuyên bố một cách mơ hồ rằng ta sẽ dùng một loại Object nào đó, vì một variable với Object type có thể hold-reference-to bất cứ một Object nào. Do đó, những dòng code sau đây có thể được dùng cho bất cứ Object nào mà Class của nó có implement Sub CôngTácTôi và không dùng parameter nào cả: Option Strict Off Module LateBind Public Sub LàmViệc( ByVal obj As Object) obj.CôngTácTôi() End Sub End Module Nếu obj passed vào Sub LàmViệc không có một Sub CôngTácTôi chẳng dùng parameter nào hết thì program sẽ bị error lúc run-time. Do đó, ta nên luôn luôn dùng một Try Structure để bắt cái error đó. Thí dụ như: Option Strict Off Module LateBind Public Sub LàmViệc( ByVal obj As Object) Try obj.CôngTácTôi() Catch e As Exception ' Code để xử lý trường hợp Object không thích hợp Console.WriteLine("Invalid Object passed to LàmViệc") End Try End Sub End Module Late Binding và Reflection . Các bài tập Microsoft .NET 101 Ghi chú Nếu sau khi Unzip source file và load project vào, bạn dùng IDE Menu command Build | Rebuild Solution để compile lại hết các modules nhưng gặp error về references. with Encoding như trong hình dưới đây: Các bài tập Microsoft .NET 103 Nếu bạn quên set up Advanced Save Option như trên, chữ Việt sẽ bị lưu trử dưới dạng ANSI nên một số sẽ mất dấu chữ Việt và. program thì nhớ set up Advanced Save Option với Menu command File như trong hình dưới đây: Các bài tập Microsoft .NET 102 Khi Dialog hiện ra, bạn chọn Unicode (UTF-8) cho Encoding: Nếu bạn không