Existe alguma maneira em C # para replace um método de class com um método de extensão?

Houve ocasiões em que eu gostaria de replace um método em uma class por um método de extensão. Existe alguma maneira de fazer isso em c #?

Por exemplo:

public static class StringExtension { public static int GetHashCode(this string inStr) { return MyHash(inStr); } } 

Um caso em que eu queria fazer isso é poder armazenar um hash de uma string em um database e ter esse mesmo valor usado por todas as classs que usam o hash da class string (ie Dictionary, etc.). não é garantido que o algoritmo de hashing integrado do .Net seja compatível de uma versão do Framework para o próximo, quero substituí-lo pelo meu.

Existem outros casos em que eu corri para onde eu gostaria de replace um método de class com um método de extensão, por isso não é apenas específico para a class string ou o método GetHashCode.

Eu sei que poderia fazer isso com subclasss de uma class existente, mas seria útil poder fazer isso com uma extensão em muitos casos.

Não; Um método de extensão nunca tem prioridade sobre um método de instância com uma assinatura adequada e nunca participa de polymorphism ( GetHashCode é um método virtual ).

Se o método tiver uma assinatura diferente, isso pode ser feito – portanto, no seu caso: não.

Caso contrário, você precisa usar inheritance para fazer o que está procurando.

Tanto quanto eu sei a resposta é não, porque um método de extensão não é uma instância.É mais como um mecanismo intellisense para mim que permite chamar um método estático usando uma instância de uma class. Eu acho que uma solução para o seu problema pode ser um interceptador que intercepta a execução de um método específico (por exemplo, GetHashCode ()) e faz outra coisa.Para usar um interceptador (como o que o Castle Project fornece) todos os objects devem ser instanciados usando um object factory (ou um contêiner IoC no Castle) para que suas interfaces possam ser interceptadas por meio de um proxy dynamic gerado em tempo de execução (o Caslte também permite interceptar membros virtuais de classs)