Перейти к содержанию

Создание класса, сериализуемого в Tessa BSON

Создание класса, сериализуемого в Tessa BSON

В Tessa используется модифицированный сериализатор BSON, в котором могут сериализоваться только поля примитивных типов, хеш-таблицы и списки. Для того, чтобы создать класс, содержимого которого сериализуется в BSON (например, в response.Info в расширениях на карточку), рекомендуется создать класс, унаследованный от Tessa.Platform.Storage.StorageObject.

[Serializable] public sealed class CardTypeInfo : StorageObject { public CardTypeInfo() : this(new Dictionary<string, object>()) { }

public CardTypeInfo(Dictionary<string, object> storage) : base(storage) { }

private CardTypeInfo(SerializationInfo info, StreamingContext context) : base(info, context) { }

private const string IDKey = "ID"; private const string NameKey = "Name";

public Guid ID { get { return this.Get<Guid>(IDKey); } set { this.Set(IDKey, value); } }

public string Name { get { return this.Get<string>(NameKey); } set { this.Set(NameKey, value); } } }

Создаём объект, который записываем в Info:

var typeInfo = new CardTypeInfo { ID = Guid.NewGuid(), Name = "random type" };

response.Info["TypeInfo"] = typeInfo.GetStorage();

Читаем объект из Info:

var typeInfo = new CardTypeInfo(response.Info.Get<Dictionary<string, object>>("TypeInfo"));

Guid id = typeInfo.ID; string name = typeInfo.Name;

Back to top