Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#序列化中的方法代码_C# - Fatal编程技术网

c#序列化中的方法代码

c#序列化中的方法代码,c#,C#,当一个对象被序列化时(通过远程处理跨线发送),实例方法代码会被序列化吗?或者只是序列化了类级实例字段 我这样问是因为我的一些对象有大型方法,我想知道我是否应该使用DTO(数据传输对象)通过线路发送数据 我猜这只是数据加上一些类型版本数据。。。我说得对吗 谢谢方法从不序列化 重“字段”-这一切都取决于序列化程序BinaryFormatter将处理多个字段;您提到了“remoting”,这意味着BinaryFormatter,但remoting在很大程度上是一个后遗症(关于remoting): 此主

当一个对象被序列化时(通过远程处理跨线发送),实例方法代码会被序列化吗?或者只是序列化了类级实例字段

我这样问是因为我的一些对象有大型方法,我想知道我是否应该使用DTO(数据传输对象)通过线路发送数据

我猜这只是数据加上一些类型版本数据。。。我说得对吗


谢谢

方法从不序列化

重“字段”-这一切都取决于序列化程序
BinaryFormatter
将处理多个字段;您提到了“remoting”,这意味着BinaryFormatter,但remoting在很大程度上是一个后遗症(关于remoting):

此主题特定于遗留问题 保留用于生产的技术 与现有系统的向后兼容性 不推荐使用此应用程序 为了新的发展。分布的 现在应该开发应用程序 使用Windows通信 基金会(WCF)< < /P> 如果您使用web服务或WCF:
XmlSerializer
执行公共字段+属性
DataContractSerializer
将执行标记字段等操作

常规类通常可以作为DTO重用,但如果您需要对连接进行大量控制(或存在版本控制问题),则单独的DTO可能会有所帮助



(编辑/附加)还请注意,还有其他原因不喜欢
BinaryFormatter
——版本控制可能非常脆弱,修复起来非常痛苦(尽管可以实现)。如果这可能是一个问题,则存在其他(更宽容的)序列化程序。。。如果是这样,请告诉我,我会更新。

保存的是与类和属性名对应的数据和标记。代码本身不会被序列化。

我只想提到XmlSerializer和DataContractSerializer不能序列化循环引用。NetDataContractSerializer可以:@Martin:实际上,DataContractSerializer也可以。您只需要启用它(参数
preserveObjectReferences
ctor)。远程处理不是传统技术,它有几个使用WCF无法实现的使用场景;我认为他们的意见可能值得注意。远程处理的最大用途(未来)可能是应用程序域之间的通信,开发人员对此一无所知。也;这种逻辑是循环的:WCF还允许使用远程处理无法实现的几种使用场景。。。我不确定这是好是坏——只是不同而已。