Có thể có hai phần (cùng một không gian tên, cùng một tên lớp) cho một lớp một phần trong các DLL riêng biệt không?
Có thể có hai phần (cùng một không gian tên, cùng một tên lớp) cho một lớp một phần trong các DLL riêng biệt không?
Câu trả lời:
Từ MSDN - Các lớp học và phương pháp :
Tất cả các định nghĩa kiểu một phần có nghĩa là các phần của cùng loại phải được xác định trong cùng một cụm và cùng một mô-đun (tệp .exe hoặc.). Định nghĩa một phần không thể mở rộng nhiều mô-đun.
Không. Các lớp một phần là một tính năng ngôn ngữ thuần túy. Khi một tập hợp được biên dịch, các tập tin được kết hợp để tạo ra loại. Không thể truyền bá các tệp thành các cụm khác nhau.
Tuy nhiên, tùy thuộc vào những gì bạn muốn làm, bạn có thể sử dụng các phương thức mở rộng để thực hiện những gì bạn cần.
Không, no không thể. Khi lắp ráp được biên dịch, lớp cần phải được hoàn thành.
Trong khi các câu trả lời khác cung cấp "Không" khó chịu mà bất kỳ ai hạ cánh trên trang này đều không muốn nhìn thấy hoặc nghe thấy, tôi đã bị bất ngờ bởi một suy nghĩ khác chưa được đề cập ở đây. Nếu các lớp một phần được cho phép trên các hội đồng, người ta sẽ có quyền truy cập vào các thành viên riêng của các loại hiện có không phải do anh ta viết, do đó cho phép anh ta thao túng chúng theo cách mà tác giả ban đầu không có ý định, do đó gây nguy hiểm cho chức năng của tất cả các lớp kế thừa quá.
Không chỉ vậy, những lớp học trong các hội đồng khác (và con cái của họ) sẽ cần phải được biên dịch lại để làm cho nó hoạt động. Do đó, về mặt logic, không thể cho phép chia một lớp trên các hội đồng khác nhau.
Bạn có thể sử dụng các phương thức mở rộng khi bạn muốn thêm một phương thức vào một lớp trong một dll khác. Một nhược điểm của phương pháp này là bạn không thể thêm các phương thức tĩnh.
Câu hỏi là tại sao bạn muốn tạo một lớp một phần trong một hội đồng khác? Bạn có thể định nghĩa các lớp và giao diện trừu tượng trên các cụm, có thể bạn cần xem xét điều đó.
Bạn có thể chỉ muốn tạo một lớp Wrapper trong thư viện của riêng bạn, xung quanh lớp trong thư viện phần 3. Sau đó thêm bất cứ chức năng nào vào lớp bao bọc.