在每个人向我扔石头之前,我已经搜索过谷歌/ MSDN / StackOver流,寻找相关的问题和答案,但没有一个适合我的需求。
我正在C# - Windows中开发一个相当大的应用程序,该应用程序目前分为以下几个部分:
基本上,在我目前的情况下,这些层的作用如下
我的问题是:
从UI层中,用户可以访问诸如: Name、Project、Project (基本上是TextBoxes )、日历等字段--所有这些字段都是UI组件。
在用户输入之后,我调用一个名为:AddExplorerNode(string name, string projectName, int projectNumber)的方法,该方法驻留在域层中。此方法根据传递的参数负责创建ExplorerNode对象(“特殊”TreeNode ),它要求传递的参数实际有效。
在对象被创建、清理、验证等之后--上面提到的相同的方法将创建的对象传递给数据层,后者将其推送到缓存库,然后如果缓存中的一切正常,则将其保存到数据存储区。
因此,到目前为止,基本上一切都是分开的UI -> -> DataLayer。
我的问题是,是否可以将域方法的签名替换为
AddExplorerNode(string name, string projectName, int projectNumber)到AddExplorerNode(TreeNode node),并基于TreeNode对象及其属性,构造我需要的实际对象?我之所以这样问是因为,如果域层知道UI (在本例中是TreeNode UI组件),我们基本上就会打破这种分离。
例如,如果明年我们将WindowsForms交换为Console Application,那么由于Console Application将没有TreeNode UI组件,该项目就会中断。
在这种情况下,是否最好有一个域方法,该方法以5-10个参数( int's、字符串等)为基础,并基于这些参数来创建我的对象,或者用TreeNode UI组件替换参数呢?
提前谢谢你。
@编辑:
我问这个问题,因为我的一位同事检查了我的代码并开始重构它。通过重构,他向域层公开了实际的TreeNode UI组件。我的方法是AddExplorerNode(string name,string projectName,int projectNumber)等等。
发布于 2016-06-30 16:15:03
您可以创建与TreeNode类似的类,而不必实际成为TreeNode。
class TreeNodeModel
{
public string Name { get; set; }
public string ProjectName { get; set; }
public int ProjectNumber { get; set; }
}然后,您可以在UI中编写一个方法,将(复制) TreeNodeModel映射到实际的TreeNode。
https://stackoverflow.com/questions/38128096
复制相似问题