Erhaltungszustand in einer Erweiterungsmethode

Das C # -Team hat zuvor erwogen, C # Erweiterungseigenschaften, Ereignisse usw. hinzuzufügen.

Per Eric Lippert:

http://blogs.msdn.com/b/ericlippert/archive/2009/10/05/why-no-extension-properties.aspx

Damit diese Funktionen jedoch nützlich sind, müssen sie in der Lage sein, einen neuen Zustand mit einem Objekt zu speichern. Der einzige Weg, dies zu tun, scheint darin zu bestehen, ein Wörterbuch zu verwenden und jede Instanz eines Objekts mit dem zusätzlichen Status zu verknüpfen.

Es wäre nützlich, wenn es möglich wäre, diese Funktionalität "manuell" zu kopieren, indem Sie ein eigenes Wörterbuch erstellen (und möglicherweise Erweiterungsmethoden abrufen / festlegen). Um jedoch eine bestimmte zuzuordnenBeispiel von einem Objekt mit einem bestimmten Status müssten Sie den tatsächlichen hashenReferenz zum Objekt. In einer anderen Sprache können Sie dies tun, indem Sie den Speicherort hashen. In C # ist dies jedoch nicht garantiert konstant, und die Verwendung von unsicherem Code zur Ausführung dieser Funktion ist ohnehin alles andere als ideal.

Weiß jemand, ob es möglich ist, einen Hash-Verweis auf ein Objekt zu erhalten, der sich nicht ändert, wenn sich der interne Zustand des Objekts ändert? Es gibt natürlich einen internen Mechanismus, mit dem einzelne Objekte unabhängig von ihrem Speicherort verfolgt werden können, aber ich bin mir nicht sicher, ob dies dem Benutzercode unterliegt.

Hinweis: Das einfache Hashing des Objekts selbst funktioniert überhaupt nicht, da GetHashCode () vom internen Status eines Objekts abhängt und nicht vonwelches Objekt es ist.

Vielen Dank für jede Einsicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage