MarshalAs里的SizeConst可以动态修改吗?

Socket通信中,客户端是C++写的,将结构体转出字符的形式,传过来。有字符串字段,但是长度是不定的。

服务端是C#,接收结构体

 public struct PROTOCOL_SEND_CHAT_MESS
{
public UInt32 protocolId;
public UInt32 nextTest;
public bool isTest;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
public string mess;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
public string mess2; 

}






protected static T Bytes2Struct<T>(byte[] bytes,T t)
{

IntPtr arrPtr = Marshal.UnsafeAddrOfPinnedArrayElement(bytes, 0);
return (T)Marshal.PtrToStructure(arrPtr, typeof(T));
} 

现在SizeConst 是写死的,能不能动态修改这个SizeConst

查看全部
H1051760124
宇智波_呵呵
2015/07/03 02:20
  • arshal
  • ize onst #
  • 点赞
  • 收藏
  • 回答
    私信

1个回复