Создание класса, сериализуемого в 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;