У нас есть метод, объявленный в файле idl, например:
[id(7), helpstring("method SomeFunction")] HRESULT SomeFunction([in] INT_PTR windowHandle, [out, retval] VARIANT_BOOL* dlgResult);
Мы реализуем его в C # с помощью этого метода:
public bool SomeFunction(int windowHandle)
Это прекрасно работает при сборке32-битный, однако при сборке x64 типы не совпадают, так как idl ищет 64-битное значение, а c # ожидает 32-битное значение.
Использование IntPtr в C # не работает, потому чтоКоду нужен long или int в c #.
Есть ли какой-либо тип, который я могу использовать в методе c #, который будет компилироваться в long или int в зависимости от платформы?
Я бы предпочел неЯ должен дублировать код, имея функцию дважды, и я не уверен, что мы можем изменить IDL для использования только Int64 из-за обратной совместимости.
Любая помощь будет принята с благодарностью.Спасибо