方法是否也与.NET中的数据成员一起序列化?

标题很明显,我需要知道方法是否与C#中的对象实例一起序列化,我知道它们不是用Java编写的,但我对C#有点新。 如果他们不这样做,我是否必须将原始类与字节流(序列化对象)放在一个包中,然后将其发送到另一台PC? 原始类可以像DLL文件一样吗?

不会。类型信息会与州一起序列化。 为了反序列化数据,您的程序将需要访问包含类型(包括方法)的程序集。

如果你已经学过C.可能会更容易理解

 class C { private int _m; private int _n; int Meth(int p) { return _m + _n + p; } } 

基本上是语法糖

 typedef struct { int _m; int _n; // NO function pointers necessary } C; void C_Meth(C* obj, int p) { return obj->_m + obj->_n + p; } 

这实际上是在面向对象语言中实现非虚方法的方式。 这里重要的是方法不是实例数据的一部分。

方法未序列化。

我不知道你的场景,但是放入一个库(assembly / dll)并在另一端使用它来反序列化可以获得所有。

PS。 您可能应该创建一些问题,询问您的方案中涉及的因素。 如果您打算动态发送和运行代码,则可能会产生可怕的安全后果。

当.NET第一次出现序列化时,我很困惑。 我认为它来自这样一个事实:大多数书籍和指南都提到它允许你将你的“对象”序列化为XML并移动它们,事实上你实际上正在保护你的对象的值,以便你可以将它们脱水。 在任何时候你都没有将整个对象保存到磁盘,因为这需要dll并且不包含在XML文件中。