我正在使用访问控制设备(终端)。API 是原生的。要将数据发送到设备,我实例化 struct(由 API 提供),使用 [Marshal.StructureToPtr] 将其更改为 IntPtr,然后将该指针传递给 API 函数。这是我正在使用的结构。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NameOfTheStruct
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
ushort[] event;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
ushort[] someName;
};
问题是给定结构中的成员名称与 [event] 关键字重叠。如果我更改成员名称,我猜对本机 api 的函数调用将失败。
这会:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
[ComAliasName("event")]
ushort[] eventName;
解决我的问题?或者还有其他解决方案吗?