У меня есть следующий класс:
public class Widget {
public virtual int Id { get; set; }
[Required]
public virtual WidgetType Type { get; set; }
public virtual string SerializedParameters {
get {
return new XmlSerializer(Parameters.GetType()).Serialize(Parameters);
} set {
Parameters = new XmlSerializer(Assembly
.LoadFrom(Server.MapPath(Type.ModelAssembly))
.GetType(Type.ModelClass)
).Deserialize(value);
}
}
private object _parameters;
public virtual object Parameters {
get {
if (_parameters == null)
_parameters = Activator.CreateInstance(Assembly
.LoadFrom(Server.MapPath(Type.ModelAssembly))
.GetType(Type.ModelClass)
);
return _parameters;
} set { _parameters = value; }
}
}
Свойство Parameters не сопоставлено с базой данных, а свойство SerializedParameters. Однако, когда он пытается получить информацию из базы данных и установить SerializedParameters (который впоследствии устанавливает параметры), свойство Type имеет значение null, и поэтому выдается исключение. Я думаю, это зависит от порядка, в котором NHibernate устанавливает свойства для виджета, но я не могу заставить его работать.
Мне было интересно, есть ли способ обойти это. Ценю помощь. Спасибо