Ich habe ein kleines Problem mit einer etwas einfachen Wrapperklasse, die ich habe.C# mimic überschreibt den Zuweisungsoperator (=)
Es sieht ungefähr so aus:
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;
}
}
ich die impliziten Wandler aus und T außer Kraft gesetzt habe, so verhält es sich fast wie eine Instanz von T selbst.
z.B.
Wrapper<int> foo = 42;
Allerdings habe ich ein kleines Problem bekommen, wenn eine Instanz des Wrapper zu einem anderen zuweisen, da ich nur den Wert der zweiten Wrapper-Klasse zuordnen will.
So jetzt habe ich dies zu tun:
Wrapper<int> foo = 42;
Wrapper<int> bar = (int)foo;
Oder aussetzen _value eine Eigenschaft öffentlich durch.
Da dies jedoch in einer Bibliothek ist und ich möchte nicht, dass der Benutzer darauf angewiesen ist, sich daran zu erinnern, haben Sie eine Idee, wie ich den Zuweisungsoperator übersteuern könnte?
Das Problem beim bloßen Ändern des Zeigers (wie beim Zuordnen einer Klasseninstanz zu einem anderen) ist, dass ich ein Wörterbuch mit Zeigern auf diese Wrapper-Objekte habe, so dass ich sie nicht ständig ändern kann Das Wörterbuch würde dann nicht mehr zusammenpassen.
Ich kann sehen, ob dies etwas verwirrend ist, also wenn ich heraus wichtig etwas übrig haben, bitte :-)
wurde das jemals gelöst? Ich habe ein ähnliches Problem - außer ich erstelle etwas, um grundlegende Arten z. float und möchte MyType machen können < float > a = 1f; a = 2f; ohne eine neue Instanz zu erstellen ... werden Referenzen wirklich durch Magie aktualisiert? Ich würde nur versuchen, aber ich bin nicht davon überzeugt, dass es ein gutes Experiment ist, denn wenn es funktioniert, könnte es blindes Glück sein für alles, was ich weiß ... – jheriko