Stan zachowania w metodzie rozszerzenia

Zespół C # wcześniej rozważał dodanie właściwości rozszerzenia, zdarzeń itp. Do C #.

Per Eric Lippert:

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

Aby jednak te funkcje były użyteczne, musiałyby być w stanie przechowywać jakiś nowy rodzaj stanu za pomocą obiektu. Wydaje się, że jedynym sposobem na to byłoby użycie słownika i skojarzenie każdej instancji obiektu z jakimkolwiek dodatkowym stanem.

Byłoby użyteczne, gdyby można było skopiować tę funkcję „ręcznie”, tworząc mój własny słownik (i być może uzyskać / ustawić metody rozszerzenia). Jednak w celu skojarzenia konkretnegoinstancja obiektu z jakimś stanem, który należałoby zmieścićodniesienie do obiektu. W innym języku możesz to zrobić poprzez zmieszanie swojej lokalizacji w pamięci, jednak w języku C #, który nie ma gwarancji, że pozostanie stały, a użycie niebezpiecznego kodu do wykonania tej funkcji i tak jest dalekie od ideału.

Czy ktoś wie, czy możliwe jest uzyskanie jakiegoś haszowalnego odniesienia do obiektu, który nie zmienia się, gdy zmienia się stan wewnętrzny obiektu? Oczywiście istnieje jakiś wewnętrzny mechanizm do śledzenia poszczególnych obiektów, niezależnie od ich lokalizacji w pamięci, ale nie jestem pewien, czy jest to narażone na kod użytkownika.

Uwaga: Po prostu mieszanie samego obiektu nie będzie w ogóle działać, ponieważ GetHashCode () zależy od wewnętrznego stanu obiektu, a nie odktóry obiekt to jest.

Dziękuję za wgląd.

questionAnswers(2)

yourAnswerToTheQuestion