序列化事件是否正确?(应用DataMember属性)
本文关键字:应用 DataMember 属性 事件 是否 序列化 | 更新日期: 2023-09-27 17:58:32
一个非常简单的问题。。。
将DataMember
属性应用于事件或委托以使其序列化是否正确?
想想我在想什么:
1) 好吧,委托是一种基于其他类型的类型,所以只要这些类型本身是可序列化的,就没有必要(不正确)序列化委托。
2) 假设事件是基于委托的,并且委托(因为1中所述)不需要直接序列化,我假设事件不需要标记为可序列化。
所以,我的问题是:
将序列化属性应用于事件和延迟是否正确?
如果答案是"否!无需使它们可序列化",1)和2)是否正确?
另一个问题是:开发人员需要将类中的哪些元素标记为可序列化(在它们上使用DataMember
)?
感谢
DataMember
只能应用于属性或字段-由AttributeTargets
:定义
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field,
Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{ ... }
CCD_ 5对于CCD_ 6和CCD_。
分布式系统中的序列化委托或事件没有意义。您正在以可互操作的格式传递数据。消息只能包含数据。没有任何内容可以描述委托(指向进程内存中方法的面向对象指针)或事件(进程内存中委托的触发器)。
如果希望在客户端上具有数据协定的事件,则必须在服务和客户端之间共享程序集和协定。在这种情况下,双方都将具有相同的类型(具有所有事件、方法、只读属性等),并且它们将仅传输存储在该类型的实例中的数据。