Tengo un problema con una clase de contenedor algo simple que tengo.imitación de C# omitiendo el operador de asignación (=)
se ve algo como esto:
public class Wrapper<T>
{
private T _value;
public Wrapper<T>(T value)
{
_value = value;
}
public static implicit operator Wrapper<T>(T value)
{
return new Wrapper<T>(value);
}
public static implicit operator T(Wrapper<T> value)
{
return value._value;
}
}
He anulado los convertidores implícitos desde y hacia T, por lo que se comporta casi como una instancia de sí mismo t.
p. Ej.
Wrapper<int> foo = 42;
Sin embargo tengo un pequeño problema al asignar una instancia de la envoltura a otro, ya que sólo desea asignar el valor de la segunda clase de contenedor.
Así que ahora, tengo que hacer esto:
Wrapper<int> foo = 42;
Wrapper<int> bar = (int)foo;
ni exponga _value públicamente a través de una propiedad.
Sin embargo, dado que esto está en una biblioteca, y no quiero que el usuario dependa de recordar esto, ¿tienen alguna idea de cómo podría imitar a la anulación del operador de asignación?
El problema solo con cambiar el puntero (como lo hace al asignar una instancia de clase a otra), es que tengo un diccionario de punteros a estos objetos Wrapper, así que no puedo tenerlos cambiando todo el tiempo, ya el diccionario dejaría de coincidir entonces.
puedo ver si esto es algo confuso, por lo que si me he dejado nada importante fuera, no dude en pedir :-)
¿Esto fue resuelto alguna vez? Tengo un problema similar, excepto que estoy creando algo para ajustar los tipos básicos, p. flotante y desea poder hacer MyType < float > a = 1f; a = 2f; sin crear una nueva instancia ... ¿las referencias realmente se actualizan por magia? Solo lo intentaría, pero no estoy seguro de que sea un buen experimento, porque si funciona, podría ser una suerte ciega por lo que sé ... – jheriko