Với hỗ trợ động mới trong C# 4, có thể viết một lớp theo cách mà nếu một phương thức được gọi trên một Ví dụ và phương thức đó không có mặt, công văn được chuyển sang phương thức khác? Điều này có thể trông giống như sau:Xử lý phương thức C# không được xác định trên đối tượng động (aka respond_to/method_missing)
public class Apple : ... {
// ...
private ... MethodMissing(string name, ...) {
if (name == "TurnIntoOrange") {
// do something
}
}
}
dynamic d = new Apple();
d.TurnIntoOrange(); // Not actually defined on Apple; will pass to MethodMissing.
Các ngôn ngữ khác sẽ gọi đây là "hỗ trợ method_missing", dưới tiêu đề chung của lập trình meta. Tôi không chắc C# gọi nó là gì. Nhưng có thể không?
Wow, nhờ Jon! –
Tôi ám chỉ điều này trong tiêu đề của tôi nhưng không trực tiếp yêu cầu nó trong cơ thể: Có một ghi đè tương tự tôi muốn sử dụng để bắt chước một phương thức "responds_to" không? Tôi thấy rằng tôi có thể kiểm tra kết quả của TryInvokeMember, nhưng điều đó có thể dẫn đến các tác dụng phụ không mong muốn. –
Không, tôi không tin rằng có bất kỳ cách nào để yêu cầu một phương pháp năng động cho dù nó sẽ xử lý bất cứ điều gì - mặc dù bạn có thể gọi GetDynamicMemberNames như là một điểm khởi đầu. –