【问题标题】:How to communicate between two separate class?如何在两个独立的类之间进行通信?
【发布时间】:2015-04-12 06:11:57
【问题描述】:

我创建了名为 connection 的单独类,并返回了 SqlConnection,如下所示:

class connection
{
    public SqlConnection Functions()
    {
        string connetionString = null;
        SqlConnection cnn;
        Boolean flag = false;
        connetionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True";
        cnn = new SqlConnection(connetionString);

        return cnn;
    }

}

我想在另一个单独的类中使用返回的连接,但似乎错误,我编码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using WindowsFormsApplication1.deepak;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            SqlConnection cnn ;

            connection c = new connection();
            cnn = new connection.Function();
            try
            {
                cnn.Open();
                MessageBox.Show ("Connection Open ! ");
                cnn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Can not open connection ! ");
            }
        }
    }
}

【问题讨论】:

    标签: c#


    【解决方案1】:

    您的connection 类(我更喜欢Connection 而不是connection)应该可以从外部访问,因此我将其修饰符设置为public

    public class Connection
    {
       public SqlConnection Function()
       {
          var connetionString = /*your connection string*/
          return new SqlConnection(connetionString);
       }
    }
    

    现在,您可以按如下方式使用它:

    var conn = new Connection().Function(); //<--- you forgot the parentheses
    try
    {
       conn.Open();
       MessageBox.Show ("Connection Open ! ");
       conn.Close();
    }
    catch (Exception ex)
    {
       MessageBox.Show("Can not open connection ! ");
    }
    

    【讨论】:

      【解决方案2】:

      我认为您在寻找 cnn = c.Functions(); 而不是 cnn = new connection.Function();
      我还建议使用 standard C# naming conventions 并在类名的开头使用大写字母,并为您的方法指定一个可以描述其用途的名称,例如 GetConnection()

      【讨论】:

        猜你喜欢
        • 2016-09-05
        • 2021-01-06
        • 1970-01-01
        • 2012-07-21
        • 2011-08-22
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多