C# GUI应用程序中的数据存储在哪里?
我一直听说应该分离GUI/数据/逻辑组件,比如MVC模式。 所以,我想知道:在GUI应用程序中,数据实际上存储在哪里 下面是一个示例(使用C#术语):C# GUI应用程序中的数据存储在哪里?,c#,model-view-controller,design-patterns,C#,Model View Controller,Design Patterns,我一直听说应该分离GUI/数据/逻辑组件,比如MVC模式。 所以,我想知道:在GUI应用程序中,数据实际上存储在哪里 下面是一个示例(使用C#术语): 假设您有一个GUI,它接受用户输入,进行一些分析,并在表格中显示结果。用户可以在一个窗口中进行多个分析,因此底部有一个列表视图,允许用户选择当前显示的分析(显示所选项) 为了显示这一点,分析数据必须存储在某个地方。我总是做两件事中的一件: 将所有数据放在一个对象中,并将其存储在ListViewItem的“Tag”属性中 扩展“ListViewIt
假设您有一个GUI,它接受用户输入,进行一些分析,并在表格中显示结果。
用户可以在一个窗口中进行多个分析,因此底部有一个列表视图,允许用户选择当前显示的分析(显示所选项) 为了显示这一点,分析数据必须存储在某个地方。
我总是做两件事中的一件:
谢谢。据我所知,您有一些ListViewItems。每个ListViewItem都与您的业务逻辑对象相关联,选择其中一个ListViewItem后,您需要对该业务对象进行一些操作。在类似的情况下,我通常将数据对象设置为
struct MyDataObject
{
string Id;//very often data object need to have Identifcator, but not always
//some fields
}
并为典型用户输入添加到数据对象构造函数
之后,我使业务逻辑层包含用于此数据对象的可用算法。对于简单的项目,这是一个静态类,如
static class MyDataObjectOperationService{
void MakeSomething(MyDataObject myDataObject);
object GetSomething(MyDataObject myDataObject);
...
}
对于通常是接口的大型项目
。此外,我通常制作一个数据层接口
,用于获取此数据对象。比如说
interface IMyDataObjectRepository{
IList<MyDataObject> GetAll();
MyDataObject GetById(string id);
//CRUD operations if it need
}
接口IMyDataObjectRepository{
IList GetAll();
MyDataObject GetById(字符串id);
//CRUD操作(如果需要)
}
之后,我将数据对象的id放入ListViewItems,并在ListViewItem上单击获取选择id,然后使用数据层类按id获取数据对象,并使用业务逻辑层类进行一些操作。如果我需要保存数据对象更改或使用数据层类创建新的数据对象I。据我所知,您有一些ListViewItems。每个ListViewItem都与您的业务逻辑对象相关联,选择其中一个ListViewItem后,您需要对该业务对象进行一些操作。在类似的情况下,我通常将数据对象设置为
struct MyDataObject
{
string Id;//very often data object need to have Identifcator, but not always
//some fields
}
并为典型用户输入添加到数据对象构造函数
之后,我使业务逻辑层包含用于此数据对象的可用算法。对于简单的项目,这是一个静态类,如
static class MyDataObjectOperationService{
void MakeSomething(MyDataObject myDataObject);
object GetSomething(MyDataObject myDataObject);
...
}
对于通常是接口的大型项目
。此外,我通常制作一个数据层接口
,用于获取此数据对象。比如说
interface IMyDataObjectRepository{
IList<MyDataObject> GetAll();
MyDataObject GetById(string id);
//CRUD operations if it need
}
接口IMyDataObjectRepository{
IList GetAll();
MyDataObject GetById(字符串id);
//CRUD操作(如果需要)
}
之后,我将数据对象的id放入ListViewItems,并在ListViewItem上单击获取选择id,然后使用数据层类按id获取数据对象,并使用业务逻辑层类进行一些操作。如果我需要保存数据对象更改或使用数据层类创建新的数据对象。我的假设正确吗,您所说的只是临时存储—仅在应用程序运行时存在的数据,而不存在任何持久性?@tereško是的,正确。我的假设正确吗,您所说的只是临时存储——只有在应用程序运行时才存在的数据,而没有持久性吗?@tereško是的,这是正确的。