我不确定这是否只是一个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
。另外,在现实生活中,这些列表是列表,树和更复杂的东西,所以我在开始之前需要一些良好的基础(实际上我已经有一个项目,我的所有数据层本身编译良好,没有{ {1}},但现在我无法将它重新组合在一起。
你会怎么处理这个?我不应该这样分开数据层吗?
答案 0 :(得分:0)
到目前为止,我认为你做得很好。您的数据层应该绝对没有对UI控件的引用(无论它们是winform,web等)。
虽然很难根据您发布的内容提供精确的代码示例,但您需要添加一组类似控制器的类,将您的数据(也称为模型)映射到用户界面(也称为视图)。它们应该包含对数据和UI对象的引用,并且是执行被剥离的工作的引用(DoSomeActionWhichRequiresControls
)。