Я наткнулся на эту интересную статью: как я полюбил COM-совместимость в CodeProject, и это заставило меня задуматься ...
Автор утверждает, что они не хотят никаких COM-объектов в своей библиотеке .NET, потому что это лишает красоту их библиотеки .NET. Вместо этого они предпочли бы написать отдельную библиотеку Interop, которая предоставляет свою библиотеку .NET для COM. Эта библиотека взаимодействия могла бы обрабатывать тот факт, что COM не поддерживает конструкторы с параметрами, перегруженными методами, обобщенными типами, наследованием, статическими методами и т. Д.
И хотя я думаю, что это очень ново, разве это не просто сборка проекта?
- Теперь вам нужно выполнить модульное тестирование вашей библиотеки .NET И библиотеки Interop.
- Теперь вам нужно потратить время на выяснение того, как обойти вашу прекрасную библиотеку .NET и открыть ее для COM.
- Вы должны, по сути, удвоить или утроить количество ваших классов.
Я, конечно, могу понять, нужна ли вам ваша библиотека для поддержки как COM, так и не COM. Однако, если вы собираетесь использовать только COM, приносит ли такой дизайн какие-то преимущества, которых я не вижу? Вы получаете только преимущества языка C #?
Или это облегчает управление версиями вашей библиотеки, предоставляя вам обертку? Это заставляет ваши модульные тесты работать быстрее, не требуя использования COM?