C# 序列化事件是否正确?(应用DataMember属性)
一个非常简单的问题 将C# 序列化事件是否正确?(应用DataMember属性),c#,.net,wcf,serialization,datacontract,C#,.net,Wcf,Serialization,Datacontract,一个非常简单的问题 将DataMember属性应用于事件或委托以使其序列化是否正确 考虑一下我的想法: 1) 委托是一种基于其他类型的类型,因此只要这些类型本身是可序列化的,就没有必要(不正确)序列化委托 2) 假设事件基于委托,并且委托(由于1中所述)不需要直接序列化,我假设事件不需要标记为可序列化 所以,我的问题是: 将序列化属性应用于事件和delagates是否正确 如果答案是“不!不需要使它们可序列化”,那么1)和2)正确吗 另一个问题:a类开发人员中的哪些元素需要标记为可序列化(使用D
DataMember
属性应用于事件或委托以使其序列化是否正确
考虑一下我的想法:
1) 委托是一种基于其他类型的类型,因此只要这些类型本身是可序列化的,就没有必要(不正确)序列化委托
2) 假设事件基于委托,并且委托(由于1中所述)不需要直接序列化,我假设事件不需要标记为可序列化
所以,我的问题是:
将序列化属性应用于事件和delagates是否正确
如果答案是“不!不需要使它们可序列化”,那么1)和2)正确吗
另一个问题:a类开发人员中的哪些元素需要标记为可序列化(使用DataMember
)
谢谢不,这是不对的
DataMember
只能应用于属性或字段,该属性或字段由AttributeTargets
定义:
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field,
Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{ ... }
AttributeTargets
对Enum
和Delegate
具有单独的值
分布式系统中的序列化委托或事件没有意义。您正在以可互操作的格式传递数据。消息只能包含数据。没有任何内容可以描述委托(指向流程内存中方法的面向对象指针)或事件(流程内存中委托的触发器)
如果希望在客户端上具有数据协定的事件,则必须在服务和客户端之间与协定共享程序集。在这种情况下,双方将具有相同的类型(所有事件、方法、只读属性等),并且只传输存储在该类型实例中的数据。不,这是不正确的
DataMember
只能应用于属性或字段,该属性或字段由AttributeTargets
定义:
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field,
Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{ ... }
AttributeTargets
对Enum
和Delegate
具有单独的值
分布式系统中的序列化委托或事件没有意义。您正在以可互操作的格式传递数据。消息只能包含数据。没有任何内容可以描述委托(指向流程内存中方法的面向对象指针)或事件(流程内存中委托的触发器)
如果希望在客户端上具有数据协定的事件,则必须在服务和客户端之间与协定共享程序集。在这种情况下,双方将具有相同的类型(所有事件、方法、只读属性等),并且它们将只传输存储在该类型实例中的数据。假设您序列化委托并在其他计算机上反序列化它。如果您尝试调用反序列化的委托,您预计会发生什么?@Gabe是的,您是对的,我自己已经问过了,,,只是想确定:)假设您序列化委托并在其他计算机上反序列化它。如果您尝试调用反序列化委托,您预计会发生什么情况?@Gabe是的,您是对的,我自己已经问过了,,,只是想确定:)