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

时间:2010-05-04 18:19:14

标签: c# dll serialization

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

4 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:10)

如果你已经学过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;
}

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

答案 2 :(得分:2)

方法未序列化。

我不知道你的场景,但是放入一个库(assembly / dll)并在另一端使用它来反序列化会让你全部。

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

答案 3 :(得分:1)

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