Print("ICHO")
我想知道我是否正确地使用来自另一个类的方法。我只需要使用一次该方法。我通过使用可接受的静态方法完成它的方式是什么?或者该方法应该是非静态的。
如果方法应该是非静态的,那么最好从IDisposable继承,以便我可以在Using语句中使用Class吗?或者只是创建一个类的实例并等待GC可以接受?
答案 0 :(得分:1)
在我看来,FillComboBox
应该在表单类中作为私有非静态方法:
public partial class Form1 : Form
{
private void StartApp()
{
LobGamma.LogInPanel.FillComboBox(LogInpanel_ComboBox, LobGamma.Connection.ObtainConnection());
}
private void FillComboBox(ComboBox Box, SqlConnection con)
{
Box.Items.Clear();
using (con)
{
SqlCommand com = new SqlCommand("Select Id From UsersTable", con);
con.Open();
using (SqlDataReader reader = com.ExecuteReader())
{
while (reader.Read())
{
Box.Items.Add(reader["Id"].ToString());
}
reader.Close();
}
}
con.Close();
}
}
这是因为所有FillComboBox
都会弄清楚组合框中应包含哪些内容。这与UI有关,为什么不把它放在表单类中呢?表单类应该初始化UI组件和UI相关的东西,这正是FillComboBox
正在做的事情。
最好从IDisposable继承,以便我可以在Using语句中使用Class吗?
如果要处理某事,您只需要实施IDisposable
。但是因为你已经在FillComboBox
中有了一个using语句,所以一切都已经处理好了!
或者,根本不要通过组合框:
private void FillComboBox(ComboBox Box, SqlConnection con)
{
LogInpanel_ComboBox.Items.Clear();
using (con)
{
SqlCommand com = new SqlCommand("Select Id From UsersTable", con);
con.Open();
using (SqlDataReader reader = com.ExecuteReader())
{
while (reader.Read())
{
LogInpanel_ComboBox.Items.Add(reader["Id"].ToString());
}
reader.Close();
}
}
con.Close();
}
答案 1 :(得分:0)
问题是你是否确实需要一个类来进行该操作。 在构造上填充对象的项列表可以通过构造函数调用的一个方法轻松完成,而不需要是类。 但是,如果要构建像dataContext这样的大型事务来处理业务和数据层(例如数据库)之间的连接,那么您应该使用普通类(甚至更好地使用类似于Entity Framework的东西)。
对于微小的CRUD操作,只需使用私有方法。