Мне интересно, как сохранить свойство, которое зависит как от постоянных сохраняемых свойств (например, строки, int), так и от собственных собственных собственных преобразований.Сохранение свойства, которое зависит от других свойств и пользовательских преобразований
Например предположим, у меня есть
class A
{
public int Id {get; set;}
public string SomeString {get; set;}
public object SpecialProperty {get; set;}
}
предположить, что сохраняющееся SpecialProperty требует чтения SomeString и в зависимости от его значения, производя несколько байт [], которые затем могут быть сохранены в базе данных.
Моя первая мысль заключалась в использовании IUserType, но этот метод NullSafeGet (IDataReader rs, string [], владелец объекта) вызывается до (или фактически, во время) SomeString сохраняется (или нет), поэтому не задано.
Моя вторая мысль заключалась в использовании ICompositeUserType и некоторой довольно запутанной установки с использованием оберток.
Моей третьей мыслью было то, что я мог бы реализовать ILifecycle и подключить метод OnLoad(). Но если бы я хотел сделать это, мне нужно было бы создать отдельное свойство для полезной нагрузки byte [], которую я действительно не хочу хранить. Это, безусловно, кажется самым легким в реализации, но также несколько неэлегантным.
например.
class A : ILifecycle
{
public int Id {get; set;}
public string SomeString {get; set;}
public object SpecialProperty {get; set;}
private byte[] payloadData { get; set; }
public void OnLoad(ISession s, object id)
{
SpecialProperty = customIn(SomeString, payloadData);
payloadData = null;
}
static object customIn(string a, byte[] payload)
{
// ...
}
}
Кто-нибудь знает о более легком и, возможно, более сжатом способе?