tôi cần để có thể vượt qua một phương pháp độc đoán đối với một số chức năng myFunction
:Làm thế nào để vượt qua một phương pháp tùy ý (hoặc ủy nhiệm) làm tham số cho một hàm?
void myFunction(AnyFunc func) { ... }
Nó nên có thể thực hiện nó với khác tĩnh, ví dụ, phương pháp công cộng hay tư nhân hoặc thậm chí các đại biểu:
myFunction(SomeClass.PublicStaticMethod);
myFunction(SomeObject.PrivateInstanceMethod);
myFunction(delegate(int x) { return 5*x; });
Phương thức đã truyền có thể có bất kỳ số tham số nào và bất kỳ loại trả về nào. Cũng có thể tìm hiểu số lượng thông số thực tế và các loại của chúng trong myFunction
thông qua phản ánh. Điều gì sẽ là AnyFunc
trong định nghĩa myFunction
để đáp ứng các yêu cầu đó? Có thể chấp nhận có một số phiên bản quá tải của myFunction
.
Bạn mong đợi gì để chuyển sang phương thức nếu nó có thông số? Có vẻ như bạn nên chuyển đổi bất kỳ phương thức nào thành không có tham số/void return (hay còn gọi là 'Action') trước khi chuyển nó sang phương thức này. – Servy
'myFunction' sẽ phân tích các tham số của hàm, kiểm tra chúng dựa vào một số cơ sở dữ liệu bên ngoài và gọi nó với các giá trị cần thiết hoặc thất bại nếu không tìm thấy mục nhập phù hợp trong cơ sở dữ liệu. –
Đó là thiết kế * rất đáng lo ngại, trong đó bạn chủ yếu xử lý mã dưới dạng dữ liệu. Bạn nên xem xét cố gắng thiết kế lại điều này sao cho mã của bạn là tĩnh. – Servy