我正在尝试将对象序列化和反序列化为字节数组以进行网络通信,我目前有一个名为“ISerialize”的接口。然而,我在思考是否可以通过反射更稳健地实现这一点。
我已经研究了一下使用BinaryFormater来做这件事情,但我无法确定它是否会给我所需的控制权。
编辑:我想要将一个类装饰成如下形式(其中字段可以是任何类型,只要它们是系统类型或也是[Serializable])
并且具有以下功能:
我已经研究了一下使用BinaryFormater来做这件事情,但我无法确定它是否会给我所需的控制权。
编辑:我想要将一个类装饰成如下形式(其中字段可以是任何类型,只要它们是系统类型或也是[Serializable])
[Serializable]
public class MyClass {
[NonSerialized]
SomeOtherClass _classFeild;
[Position (0)]
UInt16 _field1;
[Position (14)]
UInt32 _feild2;
//..........
}
并且具有以下功能:
void Test () {
MyObject = new MyClass ();
Byte[] raw;
raw = Serializer.Serialize (MyClass); // Results in _field1 at raw[0,1]
// _field2 at raw[14-18]
MyClass Deserialized = Serializer.Deserialize<MyClass> (raw);
}
所有字段都会被转换为网络字节序(大端序)。
我更喜欢将要序列化的字段列入白名单,而不是列出不需要序列化的黑名单。所以问题是,我能否使用框架来实现这个功能,还是需要编写自己的实现?