c# - Java 的 Serializable 和 C# 的 ISerializable 的区别

标签 c# java serialization translation clone

我正在将一些 Java 代码转换为 C#。 Java 代码看起来像

public abstract class myClass implements Cloneable, Serializable {

//fields, constructors etc here.
//...
//...

public abstract Object clone(); //an implementation of this is eventually provided 
in a subclass

//...
//...

}

Cloneable 接口(interface)中的 clone() 已实现,而 Serializable 没有方法,因此无需从那里实现任何内容。

在 C# 中,我的类看起来像这样:

public class myClass : ISerializable, ICloneable{

//fields, constructors etc here.
//...
//...

public abstract Object Clone ();

//...
//...

如您所见,ICloneable 的方法已经实现,但是在C# 中,与Java 的Serializable 不同,ISerializable 接口(interface)确实有一个方法,所以我需要实现它。问题是我不确定如何,因为我是从 Java 翻译这段代码,不需要在那里完成。

有人可以告诉我如何在 C# 中执行此操作吗?

我知道缺少的方法是 GetObjectData,但我不知道如何实现它,传递给它什么,或者里面应该有什么,因为这在 Java 等价物中完全缺失......

最佳答案

我假设您已经使用 Java 中的 Serializable 接口(interface)通知您的类可以被序列化。在 .Net 中,您应该为此使用 [Serializable] 属性,ISerializable 接口(interface)的含义略有不同。

所以在 .Net 中你的代码应该是这样的:

[Serializable]
public class myClass : ICloneable
{

    //fields, constructors etc here.
    //...
    //...

    public abstract Object Clone ();

    //...
    //...
}

关于c# - Java 的 Serializable 和 C# 的 ISerializable 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505180/

相关文章:

c# - lambda 表达式语法与 LambdaExpression 类

c# - 转换简单的 JavaScript 代码

c# - 将对象流二进制(反)序列化为 1 个文件

java - 如果我在更新期间将 json 中的空 id 传递给子实体,为什么 Hibernate 会插入新记录

c++ - 如何对多态继承层次结构进行灵活的序列化?

javascript - 如何反序列化未知派生类的JavaScript对象

c# - 将 mm/dd/yyyy 转换为 JsonDate 格式

c# - 我可以告诉 MVC 自动将 pascal-cased 属性分成单词吗?

java - spring集成-逐行读取远程文件

java - 注释约定