Có ai biết nếu có thể gọi phương thức trên đối tượng CLR thông qua trình chỉ mục sử dụng các tính năng lang động không? Ví dụ: myClrObj["SuperMethod"]()
mà tôi có thể dễ dàng thực hiện trong javascript.C# Chỉ số động
cảm ơn trước.
Có ai biết nếu có thể gọi phương thức trên đối tượng CLR thông qua trình chỉ mục sử dụng các tính năng lang động không? Ví dụ: myClrObj["SuperMethod"]()
mà tôi có thể dễ dàng thực hiện trong javascript.C# Chỉ số động
cảm ơn trước.
Có thể có những cách tốt hơn, nhưng một trong những cách tôi muốn biết làm thế nào để làm điều đó là:
DynamicObject
Cung cấp phương pháp tiện ích phù hợp làm cho đối tượng của bạn xuất hiện động, với DynamicObject specializ chính xác ation instantiated.
dynamic obj = myObj.AsIndexedObj(); obj["Do"]();
Bạn có thể sử dụng ImpromptuInterfsce sẵn thông qua NuGet, nó kết thúc tốt đẹp API DLR để làm cho nó đơn giản để tự động gọi một phương thức theo tên, làm việc cho cả hai đối tượng năng động và poco. Nhanh hơn phản xạ cho các đối tượng poco.
Impromptu.InvokeMember(myClrObj,"SuperMethod")
Ý tưởng tuyệt vời nhưng không phù hợp. Tôi có các lớp học hiện tại không có nguồn gốc động. – AndrewG
Bạn không cần phải lấy được các đối tượng của mình từ DynamicObject. Thay vào đó, tạo một cái gì đó của một bộ điều hợp tương tác động thay mặt cho đối tượng ban đầu của bạn. Điều này có lợi thế là nó có thể tái sử dụng được trên nhiều loại đối tượng – flq