【发布时间】:2020-06-01 15:17:03
【问题描述】:
我正在使用 C# 开发一个网络应用程序,我需要为其传输一个结构(它包含 3 个字符串成员)。
我还想包括以某些方式测试这 3 个字符串的有效性的成员函数。
我想知道,如果我要将该结构(我使用 Marshal.StructToPtr)转换为字节以便通过连接发送它,它会只是转换成员变量(3 个字符串)还是每个函数?
【问题讨论】:
我正在使用 C# 开发一个网络应用程序,我需要为其传输一个结构(它包含 3 个字符串成员)。
我还想包括以某些方式测试这 3 个字符串的有效性的成员函数。
我想知道,如果我要将该结构(我使用 Marshal.StructToPtr)转换为字节以便通过连接发送它,它会只是转换成员变量(3 个字符串)还是每个函数?
【问题讨论】:
应用程序代码(IL 指令、方法、机器代码等)不是任何序列化过程的一部分。它只会序列化那里的数据(字段)。
您可以将内存视为不同的段,其中类/结构定义与实例数据分开。
为了序列化目的而通过网络发送代码是一种不好的做法,因为它会打开远程进程来执行任意代码。
【讨论】: