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