序列化事件是否正确?(应用DataMember属性)

本文关键字:应用 DataMember 属性 事件 是否 序列化 | 更新日期: 2023-09-27 17:58:32

一个非常简单的问题。。。

DataMember属性应用于事件或委托以使其序列化是否正确?

想想我在想什么:

1) 好吧,委托是一种基于其他类型的类型,所以只要这些类型本身是可序列化的,就没有必要(不正确)序列化委托。

2) 假设事件是基于委托的,并且委托(因为1中所述)不需要直接序列化,我假设事件不需要标记为可序列化。

所以,我的问题是:

将序列化属性应用于事件和延迟是否正确?

如果答案是"否!无需使它们可序列化",1)和2)是否正确?

另一个问题是:开发人员需要将类中的哪些元素标记为可序列化(在它们上使用DataMember)?

感谢

序列化事件是否正确?(应用DataMember属性)

不,这是不正确的。DataMember只能应用于属性或字段-由AttributeTargets:定义
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field, 
    Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{ ... }

CCD_ 5对于CCD_ 6和CCD_。

分布式系统中的序列化委托或事件没有意义。您正在以可互操作的格式传递数据。消息只能包含数据。没有任何内容可以描述委托(指向进程内存中方法的面向对象指针)或事件(进程内存中委托的触发器)。

如果希望在客户端上具有数据协定的事件,则必须在服务和客户端之间共享程序集和协定。在这种情况下,双方都将具有相同的类型(具有所有事件、方法、只读属性等),并且它们将仅传输存储在该类型的实例中的数据。