2
我在C#中有一堆存儲的,序列化的類(都是從基類繼承的)。與序列化類一起,我還存儲了一個枚舉值,用於標識哪個子類被序列化。在C#中切換類的類型
這意味着無論何時我想序列化/反序列化類,我都必須使用一些基於枚舉的大開關語句來決定要反序列化的子類。似乎有一種方法可以使用某種類似結構圖的東西來實現它。 (它用於小部件/儀表板,因此將來可能會出現更多的子類)。
現在,它看起來像這樣...
widget = DeserializeFromDb(GetWidgetType(widgetrow.WidgetType), widgetRow.serializedWidget);
private HtmlWidget DeserializeFromDb(WidgetType type, string serialized)
{
Basics.Serial.IStringSerializer serializer = Basics.Serial.BinarySerializer.GetInstance();
switch (type)
{
case WidgetType.AbstractBase:
return serializer.Deserialize<HtmlWidget>(serialized);
break;
case WidgetType.Widget1:
return serializer.Deserialize<Widget1>(serialized);
break;
case WidgetType.Widget2:
return serializer.Deserialize<Widget2>(serialized);
break;
}
}