Я пытаюсь сериализовать и десериализовать объекты в / из массива байтов для сетевого взаимодействия, в настоящее время у меня есть интерфейс ISerialize. Однако я подумал, что должен быть более надежный способ сделать это с помощью рефлексии.
Я немного осмотрелся, используя BinaryFormater, но не знаю, даст ли он мне необходимый контроль.
EDIT:
Я бы хотел украсить класс следующим
(Где поля могут быть любого типа, если они являются системным типом или также [Сериализуемыми])
[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);
}
где все поля поменялись местами в / из сетевого порядка (бигендия)
Я бы также предпочел сериализовать поля белого списка, а не занести их в черный список. Итак, вопрос в том, могу ли я сделать это с помощью Framework или мне нужно написать собственную реализацию?