Tôi có một ứng dụng. Ứng dụng này sử dụng giao diện để truy cập cơ sở dữ liệu. Giao diện này có thể được thực hiện bởi nhiều lớp. Ví dụ, một sử dụng EF 4.4, nhưng các lớp khác có thể sử dụng EF5 hiệu quả hơn. Trong tương lai có lẽ tôi sẽ sử dụng EF6 vì nó sử dụng các phương thức không đồng bộ. Trong ví dụ này, tất cả các phương pháp đều sử dụng EF, nhưng có lẽ các tùy chọn khác có thể sử dụng các cách khác.Giao diện và các phương thức không đồng bộ
Ứng dụng được mã hóa một lần, sử dụng giao diện và theo tệp cấu hình, sử dụng triển khai này hoặc triển khai khác, vì vậy tôi chỉ cần sửa đổi mã ở một nơi, hàm tạo, để thêm tùy chọn mới trong instantiation của lớp được gán cho giao diện.
Hiện tại tất cả các phương thức của các lớp không phải là async
, nhưng trong tương lai nếu tôi sử dụng EF6, tôi muốn sử dụng các phương pháp không đồng bộ, vì vậy tôi không biết có thể sử dụng EF6 không và thực hiện giao diện có thể sử dụng các phương thức async
.
Đối với các phương thức không đồng bộ của EF6, tôi sẽ sử dụng mẫu async/awiat, vì vậy trong phương thức lớp của tôi, tôi cần sử dụng thuộc tính async. Điều này cho phép tôi sử dụng từ khóa await
khi tôi gọi phương thức async của EF6.
Nhưng lớp này có thể triển khai giao diện trong lần đầu tiên là cho các phương thức đồng bộ?
Có cách nào trong ứng dụng chính tôi có thể sử dụng nhiều triển khai mà không cần sửa đổi mã không? Một số triển khai sẽ sử dụng các phương thức không đồng bộ trong khi các phương thức khác sẽ đồng bộ.
Hãy nhớ rằng 'async' không phải là một phần của chữ ký; một phương thức không đồng bộ và không đồng bộ có thể thực hiện cùng một phương thức giao diện. – Servy
Nó không phải là phương pháp đó là awaitable, đó là (trở lại) loại. – rism
Giải thích quá nhiều cho một câu hỏi đơn giản. IMHO. – Mahmoodvcs