Me deparei com este artigo interessante: Como eu vim a amar a interoperabilidade COM no CodeProject, o que me fez pensar ...
O autor argumenta que eles não desejam nenhuma COM em sua biblioteca .NET porque isso tira a beleza da biblioteca .NET. Em vez disso, eles preferem escrever uma biblioteca de interoperabilidade separada que expõe sua biblioteca .NET ao COM. Essa biblioteca de interoperabilidade lidaria com o fato de o COM não suportar construtores com parâmetros, métodos sobrecarregados, genéricos, herança, métodos estáticos etc.
E embora eu ache isso muito inovador, ele não apenas complementa o projeto?
- Agora você precisa testar a sua biblioteca .NET e uma biblioteca de interoperabilidade.
- Agora você precisa dedicar um tempo para descobrir como solucionar sua bela biblioteca .NET e expô-la ao COM.
- Você precisa, efetivamente, dobrar ou triplicar sua contagem de turmas.
Certamente entendo se você precisa da sua biblioteca para suportar COM e não COM. No entanto, se você pretende apenas usar o COM, esse tipo de design traz benefícios que não vejo? Você ganha apenas os benefícios da linguagem C #?
Ou facilita o controle de versão da sua biblioteca, fornecendo um invólucro? Isso faz com que seus testes de unidade sejam executados mais rapidamente, não exigindo o uso de COM?