首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >程序structure...getting丢失

程序structure...getting丢失
EN

Stack Overflow用户
提问于 2015-07-24 11:28:27
回答 2查看 156关注 0票数 1

有人能给我指点什么是最好的方法吗? this...am和classes...where混在一起放东西。

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

所以我跳到表单设置ApplicationEnvironment给它数据库的位置

代码语言:javascript
运行
复制
dblocation = "xxxx"
ApplicationEnvironment appSet = new ApplicationEnvironment();
appSet.dbLocation=@"S:\Database\database.accdb";

然后设置DataAccess类

代码语言:javascript
运行
复制
DataAccess datAcc = new DataAccess();
DataSet ds;
ds= datAcc.GetData();

所以在DataAccess类中,我想使用在ApplicationEnvironment类中设置的dbLocation .我似乎不能称之为

代码语言:javascript
运行
复制
public DataSet GetData(){
string mydatabase = ApplicationEnvironment.dbLocation;

错误是

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

应该是ApplicationEnvironment.dbLocation.get吗?

有谁知道混合课程的好例子吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-24 12:46:44

您实际上已经接近为您的应用程序创建一个好的结构,但是有几个错误。

结构

表单不是设置应用程序其余部分的合适位置。这应该发生在主应用程序中,或者如果是一个大型企业,则在安装类中:

主要应用:设置类。设置ApplicationEnvironment。将DataAccess传递给MainForm,ApplicationEnvironment传递给DataAccess。

主表单:从DataAccess调用Getdata

ApplicationEnvironment:存储其他类可能需要的配置值.ie dbLocation (不称它们为全局变量;这些都是邪恶的东西,您没有使用它们)

DataAccess:它处理来自表单的调用以获取数据并返回,它使用dbLocation

代码

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

代码语言:javascript
运行
复制
ApplicationEnvironment appSet = new ApplicationEnvironment();
appSet.dbLocation=@"S:\Database\database.accdb";
DataAccess datAcc = new DataAccess(appSet);
MainForm form = new MainForm(datAcc);
...

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

代码语言:javascript
运行
复制
Class DataAccess
{
    private readonly string _dbLocation;

    public DataAccess(string dbLocation)
    {
        _dbLocation = dbLocation;
    }

    public SomeType GetData()
    {
        // use _dbLocation to access DB
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-07-24 11:38:25

您当前的问题可以通过两种方法中的一种解决(至少我要指出:)

创建ApplicationEnvironment实例

代码语言:javascript
运行
复制
public DataSet GetData(){
ApplicationEnvironment ae = new ApplicationEnvironment();
string mydatabase = ae.dbLocation;

使ApplicationEnvironment及其成员保持静态

代码语言:javascript
运行
复制
public static class ApplicationEnvironment
{
    public static string dbLocation = @"S:\Database\database.accdb";
}

静态时,您现有的调用

代码语言:javascript
运行
复制
public DataSet GetData(){
string mydatabase = ApplicationEnvironment.dbLocation;

会起作用的。

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

错误:

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

基本上,这意味着您必须实例化ApplicationEnvironment的一个对象来访问它的内部工作。静态类/方法没有这个限制,可以直接调用- have their own set of issues.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31609401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档