0
我的應用有以下類別:NHibernate - IUserType更改類型?
public class Widget {
public virtual int Id { get; set; }
public virtual WidgetType Type { get; set; }
public virtual string Parameters { get; set; }
}
public class WidgetType {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string ParametersAssembly { get; set; }
public virtual string ParametersClass { get; set; }
}
現在,如果我想更新的參數爲特定的部件,我會這樣說:
// Get the widget
var widget = GetWidget(1);
// Create an instance of the type parameters class
var parameters = Activator.CreateInstance(Assembly.LoadFrom(Server.MapPath("~/bin/"
+ widget.Type.ParametersAssembly + ".dll")).GetType(widget.Type.ParametersClass));
... Code here to update the parameters
widget.Parameters = new XmlSerializer(parameters.GetType()).Serialize(parameters);
我要做反向時我希望獲得參數。你可以想象這變得非常單調乏味。我想知道是否可以自動執行此操作?
我一直在看IUserType接口。我發現了一個類似的article。然而,我的問題稍微複雜一些,因爲我的類型根據窗口小部件的類型而改變。
我很感激,如果有人能讓我知道這是可能的,並可能如何實現。由於
謝謝,我可以看到這個工作,但我不知道我完全理解它。 Parameters屬性是映射到數據庫的屬性嗎?如果是這樣,那麼它不應該是一個字符串,SerializedParameters會返回一個對象? – nfplee 2012-02-27 11:19:13
'SerializedParameters'是映射到db的屬性。它包含需要其他屬性工作的轉換,因此在其他屬性可能未初始化的UserType中難以完成。 '參數'根本沒有映射 – Firo 2012-02-27 11:39:55
仍然沒有太多的喜悅。對不起,是一個痛苦,但你確定序列化和反序列化代碼進入SerializedParameters屬性,而不是參數屬性?如果你可以提供一個基於我的情景獲取和設置屬性的例子,將不勝感激。謝謝 – nfplee 2012-02-27 15:36:34