1
resposta

Só é possível utilizar a interoperabilidade COM com a aplicação em execução?

No exemplo demonstrado no vídeo, o professor declarava variáveis do tipo dynamic, para que um ambiente na plataforma .NET tenha acesso à recursos de um ambiente COM.

Porém, fiquei com a seguinte dúvida: esse tipo de acesso é possível somente em tempo de execução, por isso foram utilizadas as variáveis do tipo dynamic? Ou esse tipo foi utilizado somente para a demonstração do seu uso em exemplos?

Faço essa pergunta, pois depurei a aplicação com o intuito de verificar que tipo assumiu a variável excel. Ao depurar, a variável assumiu o tipo ApplicationClass, pertencente ao pacote Microsoft.Office.Interop.Excel. Porém ao tentar declarar a variável com esse tipo, o Visual Studio aponta um erro de compilação, dizendo que o namespace Office não existe dentro do namespace Microsoft.

Isso acontece porque esse package do Office está disponível através da interoperabilidade COM somente em tempo de execução (justificando assim, o uso do tipo dynamic)? Caso não, qual seria o motivo do erro de compilação, sendo que em tempo de execução a aplicação roda sem apresentar nenhum erro?

Agradeço desde já!

1 resposta

Olá Felipe, tudo bem?

Pelo que pesquisei sobre interoperabilidade, o uso do dynamic serve para facilitar a vida, porque se fosse utilizado object ou var, seria necessário o uso de casting para determinados tipos equivalentes aos componentes.

Segue este link da documentação mostra um pouco sobre esse uso sem o dynamic e os tipos para acessar as bibliotecas do Word e Excel.

Bons estudos!