Tôi đã nhìn thấy các câu hỏi/câu trả lời tương tự cho bài đăng này trong quá khứ, nhưng tôi hơi khác so với những người khác mà tôi đã thấy.Lựa chọn phương pháp động dựa trên kiểu tham số thời gian chạy
Về cơ bản, tôi có một giao diện chung và một số lớp triển khai/kế thừa từ nó. Sau đó, trong một lớp riêng biệt, tôi có các phương thức phải hành động dựa trên các đối tượng được đưa ra bởi giao diện IObject. Tuy nhiên, mỗi người trong số họ phải được hành động theo những cách khác nhau, do đó tại sao có một tuyên bố riêng biệt của phương pháp cho từng loại cụ thể mở rộng IObject.
class IObject
{
...
}
class ObjectType1 : IObject
{
...
}
class ObjectType2 : IObject
{
...
}
class FooBar
{
void Foo (ObjectType1 obj);
void Foo (ObjectType2 obj);
}
Bây giờ, với tôi, một giải pháp rõ ràng là tận dụng lợi thế của ràng buộc động bằng cách đặt phương thức Foo trong mỗi lớp riêng lẻ. Tuy nhiên, đây là không phải là một tùy chọn ở đây, bởi vì tôi xác định nhiều mô hình để hành động theo các đối tượng này và tôi muốn đóng gói từng mô hình riêng lẻ để xử lý các đối tượng trong lớp của riêng nó chứ không phải là tất cả các mô hình vào các lớp đối tượng.
Tôi đã tìm thấy this bài đăng hiển thị cách sử dụng từ điển để chọn động trong thời gian chạy thực hiện phương pháp chính xác. Tôi ổn với cách tiếp cận này; tuy nhiên, giả sử rằng tôi phải thực hiện một công văn như thế này một lần trong mỗi mô hình. Nếu tôi chỉ có IObject và triển khai cụ thể của nó, là có cách nào để khái quát hóa phương pháp này để tôi có thể gọi phương thức của bất kỳ tên dựa trên loại thời gian chạy của các đối tượng?
Tôi biết đây có lẽ là một câu hỏi không rõ ràng, nhưng tôi rất cảm kích mọi trợ giúp.
Đây là câu trả lời đúng tôi nghĩ. – Ziffusion
Oh wow, nếu điều này hoạt động như nó có vẻ như nó, sau đó là tuyệt vời! Tôi sẽ chơi xung quanh với một chút khi tôi nhận được một số cơ hội, nhưng cảm ơn cho giải pháp này. Trọng tâm trong mã của tôi là về khả năng đọc và bảo trì dễ dàng vì vậy điều này có vẻ khá tuyệt vời. – TSM