Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 序列化事件是否正确?(应用DataMember属性)_C#_.net_Wcf_Serialization_Datacontract - Fatal编程技术网

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是的,您是对的,我自己已经问过了,,,只是想确定:)