En mi pequeño proyecto estoy usando System.Reflection
clases para producir código ejecutable. Necesito llamar al operador +
de un tipo personalizado. ¿Alguien sabe cómo puedo llamar al operador personalizado de la clase personalizada usando la reflexión de C#?Cómo llamar al operador personalizado con Reflection
18
A
Respuesta
22
C# compilador convierte sobrecargado operador para funciones con nombre op_XXXX
donde XXXX
es la operación:
operator==
->op_Equality
operator!=
->op_Inequality
operator+
->op_Addition
operator-
->op_Subtraction
operator<
->op_LessThan
operator>
->op_GreaterThan
operator<=
->op_LessThanOrEqual
operator>=
->op_GreaterThanOrEqual
y así sucesivamente.
Así que para recuperar el método de la DateTime
estructura operator+
, tiene que escribir:
MethodInfo mi = typeof(DateTime).GetMethod("op_Addition",
BindingFlags.Static | BindingFlags.Public);
1
Considere hacer su operador personalizado como property
de su Class
. Y luego acceda al property
y su value
a través de reflection
.
como
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);
Cuestiones relacionadas
- 1. ¿Llamar al constructor personalizado con Dapper?
- 2. ¿Cómo usaría reflection para llamar a todos los métodos que tienen un determinado atributo personalizado?
- 3. ¿Por qué llamar al operador sizeof con dos argumentos?
- 4. .NET Reflection: ¿Cómo llamar al método de interfaz sin crear una instancia?
- 5. Error al llamar a MvcHttpHandler.ExecuteRequest desde IHttpHandler personalizado
- 6. Usar Reflection para llamar a un método de una propiedad
- 7. No hay función de coincidencia para llamar al operador nuevo
- 8. Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?
- 9. Cómo obtener una propiedad estática con Reflection
- 10. cómo llamar al constructor padre?
- 11. Llamar al procedimiento almacenado con los parámetros
- 12. Al llamar a una función de Javascript, ¿cómo configuro un valor personalizado de "esto"?
- 13. cómo llamar a un operador como función en C++
- 14. Cómo lidiar con el miedo al desarrollo personalizado
- 15. ¿Cómo llamar al método genérico con un objeto Tipo dado?
- 16. ¿Cómo llamar al método en el archivo jar con terminal?
- 17. ¿Cómo puedo llamar al valor predeterminado (T) con un tipo?
- 18. Cómo llamar al constructor con call_user_func_array en PHP
- 19. Cómo llamar al servicio google map geocode con jquery ajax
- 20. Cómo llamar al método vararg Java desde C con valist
- 21. Cómo llamar al constructor no predeterminado con assembly.CreateInstance
- 22. scala reflection
- 23. Cómo usar Reflection para invocar un método sobrecargado en .NET
- 24. ¿Cómo puedo llamar a Initialize en un MembershipProvider personalizado?
- 25. Busque un campo privado con Reflection?
- 26. Anulación de un método privado con Reflection
- 27. Diferencia al llamar al trabajo
- 28. Cómo agregar indention al operador de secuencia
- 29. NullReferenceException al llamar NavigationContext
- 30. C++ Qt Reflection with Copy and Assignment
Simplemente curioso :) ¿Qué pasa si tengo un método estático 'op_Addition' con la misma firma? –
@ ŞafakGür A continuación, obtendrá un error del compilador que dice "Tipo '' ya define un miembro llamado 'op_Addition' con los mismos tipos de parámetros". Debido a que el método del operador definido se renombró exactamente al nombre antes mencionado, no puede tener ambos en la misma clase. –
¿Y cuál sería la regla de denominación para los operadores de casting? – Grx70