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