Preservando o estado em um método de extensão

A equipe do C # considerou anteriormente adicionar propriedades de extensão, eventos etc. ao C #.

Per Eric Lippert:

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

No entanto, para que esses recursos sejam úteis, eles precisariam ser capazes de armazenar algum novo tipo de estado com um objeto. Parece que a única maneira de fazer isso seria usar um dicionário e associar cada instância de um objeto a qualquer estado adicional.

Seria útil se fosse possível copiar essa funcionalidade "manualmente" criando meu próprio dicionário (e talvez obtenha / configure métodos de extensão). No entanto, para associar um determinadoinstância de um objeto com algum estado que você precisa para hash o realreferência para o objeto. Em outro idioma, você pode fazer isso, codificando seu local de memória, no entanto, em C # que não é garantido para permanecer constante, e usando código não seguro para realizar esse recurso está longe de ser ideal de qualquer maneira.

Alguém sabe se é possível obter alguma referência hashable a um objeto que não muda conforme o estado interno do objeto é alterado? Obviamente, há algum mecanismo interno para rastrear objetos individuais, independentemente de sua localização na memória, mas não tenho certeza se isso está exposto ao código do usuário.

Nota: Simplesmente hashing o objeto em si não funcionará, porque GetHashCode () depende do estado interno de um objeto nãoqual objeto isto é.

Obrigado por qualquer insight.

questionAnswers(2)

yourAnswerToTheQuestion