Duplicar posible:
Define a generic that implements the + operatorCómo imponer, en un parámetro de tipo genérico C#, que algunos operadores son compatibles?
estoy trabajando recientemente en una biblioteca de clases C# aplicación de un algoritmo. El punto es que me gustaría que los usuarios de la biblioteca puedan elegir la precisión de la máquina (simple o doble) con la que debería funcionar el algoritmo, y estoy tratando de hacerlo con genéricos. Así, por ejemplo:
Algorithm<double> a = new Algorithm<double>();
/** Some initializations here */
double result = a.Solve();
o
Algorithm<float> a = new Algorithm<float>();
/** Some initializations here */
float result = a.Solve();
Por lo tanto, el parámetro de tipo para las clases genéricas está destinado a ser un número decimal (porque en el código del algoritmo que necesito para usar +, *, /, -), pero no sé qué tipo de restricción de tipo imponerle. He pensado en construir una interfaz con todos los operadores pero, desafortunadamente, esto no está permitido. ¿Algunas ideas?
De lo contrario, ¿es posible obtener en C# algo similar a template specialization en C++?
Gracias
Tommaso
Otra posibilidad, en lugar de definir las interfaces y las clases que las implementan, debería ser capaz de declarar las interfaces y enumerar las clases que las implementan en la declaración de la interfaz. El compilador debería encargarse del resto – devio
@devio: suena como una variante interesante. ¿Puedes dar algunas referencias? – tunnuz
@tunnuz no hay "referencia", es un deseo, como la idea de Jon, y debería estar en la lista de deseos de alguien para la próxima versión de C#;) – devio