可序列化和同步

时间:2012-01-03 20:41:43

标签: c# serialization synchronization

我有一个小类,我使用[Synchronization]属性使线程安全,它还实现了ContextBoundObject接口。我想创建这个类[Serializable]。代码编译但我收到了

System.Runtime.Remoting.RemotingException: Remoting cannot find field '__identity' on type 'System.MarshalByRefObject'

异常。我知道标有[同步]的类是通过一些'远程'代理访问的,但我希望默认的序列化机制能够正常工作。

这是一个小应用程序,该类只是一个内存序列(整数id)生成器,因此没有真正的远程处理。我想我可以通过其他方式(锁定关键字)进行同步,但我想知道这个问题的标准解决方案是什么。

更新:最后我放弃了[Synchronization]属性以使用基本序列化。

1 个答案:

答案 0 :(得分:1)

您可以实现ISerializable接口,而不仅仅使用Serializable属性。

您可以在此处详细了解:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

基本上你必须实现一个方法 - GetObjectData - 和一个具有类似签名的构造函数。