Sobrecarga del operador aritmético para una clase genérica en C #

Dado una definición de clase genérica como

public class ConstrainedNumber<T> :
    IEquatable<ConstrainedNumber<T>>,
    IEquatable<T>,
    IComparable<ConstrainedNumber<T>>,
    IComparable<T>,
    IComparable where T:struct, IComparable, IComparable<T>, IEquatable<T>

¿Cómo puedo definir operadores aritméticos para ello?

Lo siguiente no se compila, porque el operador '+' no se puede aplicar a los tipos 'T' y 'T':

public static T operator +( ConstrainedNumber<T> x, ConstrainedNumber<T> y)
{
    return x._value + y._value;
}

El tipo genérico 'T' está restringido con la palabra clave 'where' como puede ver, pero necesito una restricción para los tipos de números que tienen operadores aritméticos (IArithmetic?).

'T' será un tipo de número primitivo como int, float, etc. ¿Existe una restricción 'where' para tales tipos?

Respuestas a la pregunta(12)

Su respuesta a la pregunta