2011-07-14 8 views
-1

私の無能さは、私のプロジェクトで「クリーン」なソリューションを使用することを余儀なくされました。私はクラスでADOデータセットを得て、それをwinformsと他のクラスとの間で共有する必要があります。それを達成するために、私はデータセットをパブリックメンバーとして作成しました。私が初期のプロジェクトステージにいたとき、私はインターネット上でかなり多くを検索しましたが、満足のいく回答は見つかりませんでした。しかし、今はもう少し時間があります。私のプロジェクトは大きくないので、正しくやりたいと思います。何かヒント?クラス間のデータセットを共有する

タンク、 レイ

+0

そのあなたが達成したいのか全く不明で。 「winformsと他のクラスとのデータセットを共有する」とはどういう意味ですか? –

+0

私はごめんなさい、私はより具体的にしようとします。いくつかのdb関連の操作を実装するクラスがあり、データを保持するDataSetメンバーがあります。私はこのDataSetを私のプロジェクトの他のクラスのための唯一のデータソースにします。システムリソースを浪費するのを避けるために、他のクラスのためにできるだけ多くのアクセシビリティを利用したいと思っています。これは説明的ですか? – Ray

答えて

1

は非常に一般的なquesitonに答えるようにしてください:あなたが書いたもの読んで、私はそれがアプリのさまざまな部分であなたがaceesをするクラスのパブリックプロパティを作るためにperectly良い解決策だと言うwolud 。私が考えることができる唯一のヒント(指定されていないので、それはそうしないという意味ではありません)は、特殊なデータアクセスクラスにDataSetを持っています。

繰り返し、その質問はあまりにも一般的です。もっと具体的なものを分かれば、もっと具体的な助けを受けることができます。

よろしくお願いいたします。

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()); 
    } 
} 
+0

ありがとうMitja、確かに、静的なデータセットをマーキングするのは解決策です:) – Ray

関連する問題