Сохранение состояния в методе расширения

Команда C # ранее рассматривала возможность добавления свойств расширения, событий и т. Д. В C #.

Пер Эрик Липперт:

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

Однако для того, чтобы эти функции были полезны, они должны были бы иметь возможность хранить какой-то новый тип состояния с объектом. Кажется, что единственный способ сделать это - использовать словарь и связать каждый экземпляр объекта с каким-либо дополнительным состоянием.

Было бы полезно, если бы можно было скопировать эту функцию "вручную" создав свой собственный словарь (и, возможно, получить / установить методы расширения). Однако для того, чтобы связать определенныйinstance объекта с некоторым состоянием, вам нужно будет хешировать фактическоеreference к объекту. На другом языке вы могли бы сделать это, хэшируя место в памяти, однако в C # это не гарантируется постоянным, и использование небезопасного кода для реализации этой функции в любом случае далеко от идеала.

Кто-нибудь знает, возможно ли получить некоторую хешируемую ссылку на объект, которая не изменяется при изменении внутреннего состояния объекта? Очевидно, существует некоторый внутренний механизм для отслеживания отдельных объектов независимо от их местоположения в памяти, но я не уверен, что на него воздействует пользовательский код.

Примечание: простое хеширование самого объекта вообще не будет работать, поскольку GetHashCode () зависит от того, не находится ли внутреннее состояние объектаwhich object это.

Спасибо за понимание.

Ответы на вопрос(2)

Ваш ответ на вопрос