程序结构…,弄丢了

本文关键字:丢了 结构 程序 | 更新日期: 2023-09-27 18:04:23

谁能告诉我最好的方法是什么?我的功课搞混了……放东西的地方

  • 主表单:设置类并将dblocation传递给ApplicationEnvironment,从DataAccess中调用Getdata
  • ApplicationEnvironment:存储其他类可能需要的全局变量…ie dbLocation
  • DataAccess:这处理从表单调用获取数据并返回,它使用dbLocation

我跳转到form setup ApplicationEnvironment输入数据库位置

dblocation = "xxxx"
ApplicationEnvironment appSet = new ApplicationEnvironment();
appSet.dbLocation=@"S:'Database'database.accdb";

然后设置DataAccess类

DataAccess datAcc = new DataAccess();
DataSet ds;
ds= datAcc.GetData();

所以在数据访问类我想使用dbLocation是在ApplicationEnvironment类设置…我似乎不能称之为

public DataSet GetData(){
string mydatabase = ApplicationEnvironment.dbLocation;

错误

"非静态字段、方法或对象引用是必需的财产"

应该是applicationenvironment . dbloction .get?

谁知道混合类的好例子?

程序结构…,弄丢了

你真的很接近为你的应用程序创建一个良好的结构,但是有几个错误

结构

表单不是设置应用程序其余部分的正确位置。这应该发生在主应用程序中,或者如果是大型任务,则应该在setup类中:

主应用程序:设置类。设置应用环境。把数据访问传递给主表单,把应用环境传递给数据访问。

主表单:从DataAccess中调用Getdata

ApplicationEnvironment:存储其他类可能需要的配置值…例如dbLocation ()不将它们称为全局变量;这些都是邪恶的东西,你不使用它们)

DataAccess:这处理从表单调用获取数据和返回,它使用dbLocation

代码

在您的设置代码中(在主应用程序中),您将向感兴趣的各方公开系统的各个方面:

ApplicationEnvironment appSet = new ApplicationEnvironment();
appSet.dbLocation=@"S:'Database'database.accdb";
DataAccess datAcc = new DataAccess(appSet);
MainForm form = new MainForm(datAcc);
...

然后,在DataAccess中,您可以执行如下操作:

Class DataAccess
{
    private readonly string _dbLocation;
    public DataAccess(string dbLocation)
    {
        _dbLocation = dbLocation;
    }
    public SomeType GetData()
    {
        // use _dbLocation to access DB
    }
}

您眼前的问题可以通过以下两种方法之一来解决(至少我要命名:))

创建ApplicationEnvironment的实例

public DataSet GetData(){
ApplicationEnvironment ae = new ApplicationEnvironment();
string mydatabase = ae.dbLocation;

使ApplicationEnvironment及其成员为静态

public static class ApplicationEnvironment
{
    public static string dbLocation = @"S:'Database'database.accdb";
}

静态时,您现有的

调用
public DataSet GetData(){
string mydatabase = ApplicationEnvironment.dbLocation;

关于静态类/方法的一些信息:https://msdn.microsoft.com/en-us/library/79b3xss3.aspx

错误:

"非静态字段、方法或属性需要对象引用"

基本上意味着你必须实例化一个ApplicationEnvironment的对象来访问它的内部工作。静态类/方法没有这种限制,可以直接调用——尽管它们有它们自己的问题集