我正在创建我的第一个 Windows 窗体项目,我正在寻找一些建议。现在,我有两种形式。一个从用户那里获取产品信息,另一个将其显示在表格中。我有一个包含产品集合的库存类。我想表单不应该实例化这个集合,他们应该只是可以访问它。但如果是这种情况,我在哪里实例化我的库存类?一旦我这样做了,我如何将数据从这个类传递到我的表单?请注意,我不允许使用数据绑定。
谢谢你
您可以在此处使用单例模式。在此处阅读更多相关信息。例如
public class Inventory
{
private Inventory instance;
private Inventory() {}
public Inventory Instance { get {
if(instance == null) instance = new Inventory();
return instance;
}
}
//other code goes here
}
稍后您的每个表单都可以访问此类的单个实例并使用它Inventory.Instance.someMethod()
在我看来,您在询问数据访问层 (DAL)。
这种层可以在物理上(在不同的程序集中)或在逻辑上(在同一个程序集中,但不同的命名空间)内置到应用程序中,以从应用程序的其余部分抽象数据源。该数据源可以是数据库、一些外部文本文件或简单的硬编码数据。
考虑以下示例:
public class Product
{
public int Id { get; set; }
}
public class ProductsDAL
{
public static IEnumerable<Product> GetProducts()
{
return new List<Product>(new Product[]
{
new Product() { Id = 1 },
new Product() { Id = 2 }
});
}
}
在上面的示例中,ProductsDAL 类将处理抽象数据的来源,远离调用它以获取该信息的对象。大多数 DAL 类都有用于创建、读取、更新和删除它们用来访问的对象的方法(通常称为 CRUD)。
public class MyForm : Form
{
private IEnumerable<Product> products;
private void MyForm_Load(object sender, EventArgs e)
{
this.products = ProductsDAL.GetProducts();
}
}
使用 DAL 类,您可以请求它从它使用的任何来源检索产品,并将该信息加载到您的表单中。一旦你有了这些信息,你想做什么完全取决于你。您可以很好地遍历可用的产品,并将它们加载到组合框、网格中,无论您的场景需要什么。
使用这种方法,您可以替换数据源,例如我示例中的硬编码列表,以及访问数据库和一些表以稍后提取数据。在这种情况下,您只需将 ProductsDAL.GetProducts 方法中的硬编码列表替换为您的数据库调用。