有的时候,由于接口或模板需要,必须在结构中定义元素的长度,方便解释。那么怎么办呢?通过MarshalAsAttribute类来实现(指示如何在托管代码与非托管代码之间封送数据。)具体如下:
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ACTIVATECFG{
uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.Struct)]
public byte[] sPassword ;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 108, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
注意:[StructLayoutAttribute(LayoutKind.Sequential)]结构序列化声明。