我应该在类中使用公共方法还是只写属性?

本文关键字:属性 方法 我应该 | 更新日期: 2023-09-27 18:17:25

我有一个包含一个类的类库。该类负责在程序和数据库之间建立连接,并为我提供连接字符串:

public class DBcon
{
    private string pass = "";
    private string dbName = "";
    OleDbConnection con = new OleDbConnection();
    public string setdbName
    {
        set { dbName = value; }
    }
    public string setpass
    {
        set { pass = value; }
    }
    public OleDbConnection getsetcon
    {
        set { createcon(); }
        get { return con; }
    }
    private void createcon()
    {
        PathFinder dbPath = new PathFinder();    // just another class 
        string DBPath = "";
        dbPath.dbFilesPath = "db";
        dbPath.setDBName = dbName;
        DBPath = dbPath.dbFilesPath;
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" +
        "Persist Security Info = False;Jet OLEDB:Database Password=" + pass + "";
    }
}

首先,我想使用一个公共方法ie。createcon,以避免所有的属性,但后来我读到这是一个不好的做法。然后我决定使用只写属性,但它们也被认为是不好的做法。

谁能告诉我怎么做才能使我的课结构良好?我使用只写属性,因为我不想返回字符串。我只需要OledbConnection。

任何帮助,即使它改变了类的结构,我们也会很感激。

我应该在类中使用公共方法还是只写属性?

public class DBConnection
{
    private string pass = string.Empty;
    private string dbName = string.Empty;
    private OleDbConnection connection;
    public void DBConnection(string dbName, string pass)
    {
        this.dbName = dbName;
        this.pass = pass;
        this.Initialize();
    }
    public OleDbConnection Connection
    {
        get {return this.connection;}
    }
    private void Initialize()
    {
        //all the initialization
        var connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" +
        "Persist Security Info = False;Jet OLEDB:Database Password=" + pass + "";
        this.connection = new OleDbConnection(connString);
    }
}

注。而不是使用字符串连接,使用适当的字符串生成器连接路径。