tailieunhanh - Các giải pháp lập trình CSharp- P10

Các giải pháp lập trình CSharp- P10: Các giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đề thường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu. | 91 Chương 3 Miền ứng dụng cơ chế phản chiếu và siêu dữ liệu Hiện thực các thành viên ở đây. 3. Tránh nạp các assembly không cần thiết vào miền ứng dụ ng 1 Bạn cần chuyển một tham chiếu đối tượng qua lại giữa các miền ứng dụng khác nhau tuy nhiên bạn không muốn CLR nạp siêu dữ liệu mô tả kiểu của đối tượng vào các miền ứng dụng trung gian. Đóng gói tham chiếu đối tượng trong một và khi cần truy xuất đối tượng thì khôi phục lại. Khi bạn truyền một đối tượng marshal-by-value MBV qua các miền ứng dụng bộ thực thi sẽ tạo một thể hiện mới của đối tượng này trong miền ứng dụng đích. Điều này có nghĩa là bộ thực thi phải nạp assembly chứa siêu dữ liệu mô tả kiểu của đối tượng vào các miền ứng dụng. Do đó việc truyền các tham chiếu MBV qua các miền ứng dụng trung gian sẽ dẫn đến việc bộ thực thi nạp các assembly không cần thiết vào các miền ứng dụng này. Một khi đã được nạp thì các assembly thừa này sẽ không được giải phóng khỏi miền ứng dụng nếu không giải phóng cả miền ứng dụng chứa chúng xem mục . Lớp objectHandle cho phép bạn đóng gói tham chiếu đối tượng để truyền qua các miền ứng dụng mà bộ thực thi không phải nạp thêm assembly. Khi đối tượng này đến miền ứng dụng đích bạn có thể khôi phục tham chiếu đối tượng bộ thực thi sẽ nạp các assembly cần thiết và cho phép bạn truy xuất đến đối tượng như bình thường. Để đóng gói một đối tượng ví dụ bạn có thể thực hiện như sau Tạo một DataSet mới. datal new Cấu hình thêm dữ liệu cho DataSet. Đóng gói DataSet. objHandle new datal Để khôi phục một đối tượng sử dụng phương thức và ép kiểu trả về cho phù hợp ví dụ Khôi phục DataSet từ ObjectHandle. data2 92 Chương 3 Miền ứng dụng cơ chế phản chiếu và siêu dữ liệu 4. Tạo kiểu không thể vượt qua hiên miền ứng dụng ỉ Bạn cần tạo một kiểu