Я занимаюсь рефакторингом большой и сложной базы кода в .NET, в которой интенсивно используются P/Invoke to Win32 API. Структура проекта не самая лучшая, и я повсюду нахожу операторы DllImport, которые очень часто дублируются для одной и той же функции, а также объявляются различными способами:
Директивы и методы импорта иногда объявляются как общедоступные, иногда как частные, иногда как статические, а иногда как методы экземпляра. Меня беспокоит то, что рефакторинг может иметь непредвиденные последствия, но это может быть неизбежно.
Существуют ли задокументированные рекомендации, которым я могу следовать и которые могут мне помочь?
Мой инстикт состоит в том, чтобы организовать статический/общий класс Win32 P/Invoke API, в котором перечислены все эти методы и связанные с ними константы в одном файле... EDIT Существует более 70 операций импорта в user32 DLL.
(База кода состоит из более чем 20 проектов с большим количеством передачи сообщений Windows и вызовов между потоками. Это также проект VB.NET, обновленный с VB6, если это имеет значение.)