在类之间共享数据集

时间:2011-07-14 20:02:49

标签: c# class dataset

我的无能迫使我在我的项目中使用不“干净”的解决方案。我在一个类中得到了一个ADO数据集,需要在winforms和其他classess之间共享它。为了实现它,我将数据集作为公共成员。当我在项目的早期阶段,我在互联网上搜索了很多,但没有找到满意的答案。但是现在我有了一些额外的时间,而我的项目并不大,我想做得对。任何提示?

坦克, 射线

2 个答案:

答案 0 :(得分:1)

尝试回答非常普遍的问题:阅读你所写的内容,我会说这是一个非常好的解决方案,可以创建一个类的公共属性,你需要在app的不同部分使用acees。我能想到的唯一提示(仅因为它没有指定,这并不意味着它没有以这种方式完成)在您的专用数据访问类中有一个DataSet。

重复一遍,这个问题过于笼统。如果你把更详细的东西分开,你可能会得到更多关于主题的具体帮助。

问候。

答案 1 :(得分:0)

使用get,set accessor将dataSet创建为属性。你可以将它设置为静态,因此它可以在不创建类(或表单)新引用的情况下使用。

示例:

public partial class Form1 : Form
{
    public static DataSet myDataSet { get; set; }
    public Form1()
    {
        InitializeComponent();

        Class1 c1 = new Class1();
        Class2 c2 = new Class2();
    }
}

class Class1
{
    public Class1()
    {      
        //fill dataSet (add new table and some example rows):
        DataTable table = new DataTable("table1");
        table.Columns.Add("Column1", typeof(string));
        table.Rows.Add("item 1");
        table.Rows.Add("item 2");

        Form1.myDataSet = new DataSet();
        Form1.myDataSet.Tables.Add(table);
    }
}

class Class2
{
    public Class2()
    {
        //show dataSet results:
        StringBuilder sb = new StringBuilder();
        foreach (DataRow dr in Form1.myDataSet.Tables["table1"].Rows)
        {
            sb.AppendLine(dr[0].ToString());
        }
        //show:
        System.Windows.Forms.MessageBox.Show(sb.ToString());
    }
}