Trong dự án nhỏ của tôi, tôi đang sử dụng các lớp System.Reflection
để tạo mã thực thi. Tôi cần gọi nhà điều hành +
của một loại tùy chỉnh. Có ai biết làm thế nào tôi có thể gọi điều hành tùy chỉnh của lớp tùy chỉnh bằng cách sử dụng C# phản ánh?Cách gọi nhà điều hành tùy chỉnh với Reflection
18
A
Trả lời
22
biên dịch C# chuyển quá tải vận hành chức năng với tên op_XXXX
nơi XXXX
là hoạt động:
operator==
->op_Equality
operator!=
->op_Inequality
operator+
->op_Addition
operator-
->op_Subtraction
operator<
->op_LessThan
operator>
->op_GreaterThan
operator<=
->op_LessThanOrEqual
operator>=
->op_GreaterThanOrEqual
và vân vân.
Vì vậy, để lấy phương pháp operator+
của DateTime
struct, bạn cần phải viết:
MethodInfo mi = typeof(DateTime).GetMethod("op_Addition",
BindingFlags.Static | BindingFlags.Public);
1
Cân nhắc đặt toán tử tùy chỉnh của bạn thành property
trong số Class
. Và sau đó truy cập vào property
và value
của chúng tôi thông qua reflection
.
như
PropertyInfo pinfo = obj.GetType().GetProperty("CustomOperator", BindingFlags.Public | BindingFlags.Instance);
string customOperator = pinfo.GetValue(obj,null) as string;
6
typeof(A).GetMethod("op_Addition").Invoke(null, instance1, instance2);
Các vấn đề liên quan
- 1. Nhà điều hành đường ống tùy chỉnh với Khung tổng hợp MongoDB
- 2. VB.NET: = Nhà điều hành
- 3. nhà điều hành gọi điện thoại << trong gdb
- 4. Quá tải + Nhà điều hành Với Mẫu
- 5. Nhà điều hành Groovy ==
- 6. Groovy *. Nhà điều hành
- 7. Mùa xuân - Gọi nhà cung cấp xác thực tùy chỉnh từ bộ điều khiển
- 8. nhà điều hành groovy^
- 9. Nhà điều hành Javascript! ==
- 10. Nhà điều hành ngầm?
- 11. Nhà điều hành Oracle "(+)"
- 12. Javascript || nhà điều hành
- 13. Nhà điều hành Scala @
- 14. LINQ giữa nhà điều hành
- 15. nhà điều hành có điều kiện với DataBinder.Eval
- 16. Nhà điều hành XOR chậm
- 17. LINQ IN Nhà điều hành
- 18. Nhà điều hành "==" Javascript nằm
- 19. Nhà điều hành concat JPA
- 20. tạo tùy chỉnh tạo dự án với nhà soạn nhạc
- 21. Java Reflection gọi constructor với các loại nguyên thủy
- 22. : nhà điều hành (của Elvis điều hành ') trong PHP
- 23. R% trong% nhà điều hành
- 24. SQL Server * = Nhà điều hành?
- 25. || nhà điều hành làm gì?
- 26. Nhà điều hành tăng sau +
- 27. Quá tải nhà điều hành trong Clojure
- 28. MONGO DB Giống như nhà điều hành
- 29. Đường ray: Hướng đến hành động điều khiển tùy chỉnh
- 30. AlphabetIndexer với Bộ điều hợp Tùy chỉnh
Chỉ cần tò mò :) Nếu tôi có một 'op_Addition' phương pháp tĩnh đối với ký giống nhau không? –
@ ŞafakGür Sau đó, bạn sẽ nhận được một lỗi trình biên dịch nói rằng "Type" 'đã định nghĩa một thành viên được gọi là' op_Addition 'với các kiểu tham số tương tự ". Bởi vì phương thức toán tử đã định nghĩa được đổi tên chính xác thành tên đã nói ở trên, bạn không thể có cả hai trong cùng một lớp. –
Và quy tắc đặt tên cho các toán tử đúc là gì? – Grx70