обмен данными между классами - PullRequest
0 голосов
/ 15 июля 2011

Моя некомпетентность заставила меня использовать не «чистое» решение в моем проекте.Я получил набор данных ADO в классе, и мне нужно поделиться им между winforms и другими классами.Чтобы добиться этого, я сделал набор данных как открытый член.Когда я был на ранней стадии проекта, я много искал в Интернете, но не нашел удовлетворительного ответа.Но теперь у меня есть дополнительное время, и мой проект не слишком большой, я бы хотел сделать это правильно.Есть подсказки?

Танки, Рэй

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Попытайтесь ответить на очень общий вопрос: читая то, что вы пишете, я бы сказал, что это очень хорошее решение - сделать публичное свойство класса, который вам нужен, в разных частях приложения. Единственный намек, о котором я мог подумать (только потому, что он не указан, что не означает, что это не сделано таким образом), имеет DataSet в вашем специализированном классе доступа к данным.

Повторяю, этот вопрос слишком общий. Может быть, если вы укажете что-то более подробное, вам будет оказана более конкретная помощь по этому вопросу.

Привет.

0 голосов
/ 15 июля 2011

Создать dataSet как свойство, используя get, set accessor. Вы можете сделать его статическим, чтобы он был доступен без создания классов (или форм) новых ссылок.

Пример:

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());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...