У меня есть менеджер-оболочка для нативной библиотеки - нативная библиотека - C ++ с экспортированным интерфейсом C, и я использую P / Invoke на управляемой стороне для достижения взаимодействия. Я контролирую как управляемый, так и собственный код.
В нативном коде есть перечисление с соответствующим перечислением в управляемом коде, что-то вроде этого:
// C#
public enum ErrorCode {
None = 0,
General = 1,
BadThings = 2,
HardDriveWasRemoved = 3,
}
// C++
enum ERROR_CODE {
ERROR_CODE_NONE = 0,
ERROR_CODE_GENERAL = 1,
ERROR_CODE_BAD_THINGS = 2,
ERROR_CODE_HARD_DRIVE_REMOVED = 3,
}
Эти перечисления должны быть синхронизированы, потому что значения перечисления передаются назад и вперед между управляемым и собственным кодом; неправильное сопоставление между ними вызывает тонкие сбои, которые не всегда сразу очевидны.
Есть ли у кого-нибудь какие-нибудь умные (но относительно легкие) методы для (а) автоматического поддержания этих перечислений в синхронизации или (б) предоставления предупреждения / ошибки / сбоя как можно раньше, чтобы перечисления не были синхронизированы ?