我不確定這是否完全是一個MVC模式,但我想要做的是將所有數據層(用幾句話就是所有將被序列化爲一個XML文件)分開,從它的動作。僅僅爲了實現MVC實際上並不是我的目標。所以如果這不完全是MVC,那我就沒問題了。如何將控制器從模型中分離出來?
說,例如,我有這個類(這些只是樣品類,儘量說明我的問題,不是我的實際類):
public class MixedSubClass
{
public string SomeData {get;set;}
public void DoSomeActionWhichRequiresControls(Control someControl)
{
// do stuff
}
}
public class MixedClass
{
private Control _SomeControl;
public List<MixedSubClass> _SubClasses = new List<MixedSubClass>();
public List<MixedSubClass> SubClasses { get { return _SubClasses; } }
public MixedClass(Control someControl)
{
_SomeControl = someControl;
}
public void DoSomeMoreActionsWhichRequiresControls()
{
foreach (var subClass in SubClasses)
{
subClass.DoSomeActionWhichRequiresControls(_SomeControl);
}
// Do more stuff
}
}
所以,當我序列MixedClass
,只有公共領域得到連載,這是我想要的。但是現在我想要一個唯一的數據層,它甚至不需要Windows.Forms
組件。我想留在這裏:
public class MixedSubClass
{
public string SomeData {get;set;}
}
public class MixedClass
{
public List<MixedSubClass> _SubClasses = new List<MixedSubClass>();
public List<MixedSubClass> SubClasses { get { return _SubClasses; } }
}
並把所有這一切放到一個獨立的程序集。但現在我的問題是如何將這轉回到以前的事情。首先我想到的是使用擴展方法,但是,正如您在示例代碼中所看到的,有時我需要存儲一些不可序列化的值,例如Control _SomeControl
。此外,在現實生活中,這些列表是列表,樹和更復雜的東西列表,所以我需要一個良好的基礎,然後才能開始工作(實際上,我已經有了一個項目,其中包含我自己的所有數據層,編譯良好,沒有Windows.Forms
,但現在我無法將它重新組合在一起)。
你將如何處理?我應該不以這種方式分離數據層嗎?