Definição – o que significa Shim?
Shim, em C #, é uma classe de modelo derivada de uma classe base com classes derivadas que herdam os dados e o comportamento da classe base e variam apenas no tipo. A classe derivada da classe shim reutiliza a implementação fornecida pela classe shim.
O shim pode ser projetado para atuar como uma fina camada de compatibilidade, que pode resolver os problemas de compatibilidade que podem surgir durante o desenvolvimento de novas versões de aplicativos. Também é usado para executar aplicativos em plataformas de software para as quais não foram originalmente projetados.
Em geral, a classe shim é usada principalmente para fornecer acesso à funcionalidade apenas por meio das classes derivadas da classe shim. Essa abordagem ajuda a fornecer extensibilidade de código. Também evita a duplicação de código e evita erros devido ao recortar e colar. Isso pode significar custos mais baixos e menos manutenção.
Definirtec explica Shim
Uma classe shim é uma classe de modelo que leva o tipo como parâmetro. Ele pode ser usado em qualquer nível de uma cadeia de herança e pode fornecer melhor manutenção e extensão da hierarquia.
Uma classe de shim pode ser implementada usando métodos de contenção e agregação. No caso de uma abordagem de contenção, a classe shim passa suas chamadas para a reimplementação da interface para fornecer comportamento adicional. No método de agregação, a interface para a classe interna é passada para o objeto externo e não há especialização do comportamento do objeto interno.
Por exemplo, Wine é um shim que permite que muitos aplicativos do Windows sejam executados em sistemas operacionais como Linux, Solaris, etc.
Nos casos em que a chamada para o código não gerenciado precisa ser encaminhada do código gerenciado após algumas inicializações, a classe shim pode ser usada como uma classe de wrapper. Esta classe de shim pode ser criada como uma classe mais genérica que não pode ser usada diretamente, mas permite a geração de classes derivadas que possuem funcionalidade comum. Ajuda a construir uma estrutura em que a classe shim forma o vínculo entre a classe base que contém funcionalidades comuns e as classes derivadas que possuem funções personalizadas.
Um COM shim que vincula um aplicativo host do Microsoft Office e uma extensão gerenciada ajuda a fornecer segurança e isola várias extensões do Microsoft Office.
Esta definição foi escrita no contexto de C #