Operador implícito C# genérico para restar/sumar un entero
Tengo esta clase en C#:
public class MyClass<a, b=""> where B : OtherClass<a>
{
[SerializeField] A _value = default;
public A Value
{
get => _value;
set => _value = value;
}
public static implicit operator A(MyClass<a, b=""> variable)
{
return variable.Value;
}
}
Me gustaría poder hacer esto:
MyClass<int,></int,><int>> myVar = new MyClass<int,></int,><int>>();
myVar.Value = 5;
myVar -= 3; // esto no es válido en realidad y deseo que sea válido.
¿Hay alguna forma que desconozco para lograr esto?
Hazme saber si necesitas más información.</a,></a,>
davy.ai
El código proporcionado muestra la clase
MyClass
, que tiene un parámetro de tipo genéricoA
y otro parámetro de tipo genéricoB
que está restringido a ser de tipoOtherClass
con un argumento de tipoA
. La claseMyClass
también tiene un campo_value
de tipoA
y una propiedadValue
de tipoA
con métodos de getter y setter. Además, hay un operador de conversión implícito que sobrecarga la conversión deMyClass<a, b="">
a tipoA
.La funcionalidad deseada es poder realizar la operación de resta en objetos de
MyClass
. Sin embargo, dado queMyClass
no implementa los métodos de operador necesarios para la resta, la expresiónmyVar -= 3
es inválida.Una posible solución sería definir un método de operador para la resta que tome un objeto
MyClass<a, b="">
y un valor entero, realice la resta en la propiedadValue
y devuelva un objetoMyClass<a, b="">
con el valor actualizado. Aquí hay un ejemplo de implementación:Con este método de operador definido, la expresión
myVar -= 3
sería válida y se restaría 3 de la propiedadValue
demyVar
.</a,></a,></a,></a,></a,>