Các bài tập Microsoft .NET 102Khi 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..
Trang 1Cá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:
Trang 2Cá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:
Trang 3Cá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()
Trang 4Cá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
Trang 5Cá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