我的无能使我在项目中不使用“干净”解决方案。我在一个类中得到了一个ADO数据集,并且需要在winforms和其他类之间共享它。为了实现它,我将数据集作为公众成员。当我在项目早期阶段时,我在互联网上搜索了很多,但还没有找到令人满意的答案。但是现在我还有一些额外的时间,而且我的项目不是很大,我想做的对。任何提示?在分类之间共享数据集
坦克, 雷
我的无能使我在项目中不使用“干净”解决方案。我在一个类中得到了一个ADO数据集,并且需要在winforms和其他类之间共享它。为了实现它,我将数据集作为公众成员。当我在项目早期阶段时,我在互联网上搜索了很多,但还没有找到令人满意的答案。但是现在我还有一些额外的时间,而且我的项目不是很大,我想做的对。任何提示?在分类之间共享数据集
坦克, 雷
尝试回答非常通用quesiton:读你写的东西,我wolud说,这是perectly很好的解决方案,使您要在应用程序的不同部分acees一类的公共属性。唯一的提示,我能想到的(仅仅因为它没有被指定,并不意味着它没有以这种方式完成)在你的专用数据访问类中有一个DataSet。
重复,这个问题太泛泛。也许如果你将某些更具体的事情细化,你将会得到更具体的帮助。
问候。
使用get,set accessor创建dataSet作为属性。 YOu可以使它成为静态的,所以它可以在不创建类(或形式)新引用的情况下使用。
例子:
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());
}
}
感谢Mitja,事实上,将数据集标记为静态是一个解决方案:) – Ray
它完全不清楚你想要达到的目标。这是什么意思“共享winforms和其他类的数据集”? –
我很抱歉,我会尽量做得更具体。我有一个类实现了一些数据库相关的操作,并有一个DataSet成员来保存数据。我希望这个DataSet成为我项目中其他类的唯一数据源。为了避免浪费系统资源,我希望尽可能多地访问其他类别。这是否更具描述性? – Ray