Soy relativamente nuevo en el lenguaje C# pero con mucha ayuda de las búsquedas de Google y Stack Overflow. He realizado varias aplicaciones que incluyen trabajar con Office, System Services, Processes, WMI, SQL, Linq y Active. Directorio ...Cuándo usar las clases en C#?
Aunque a pesar de tener éxito con la obtención de estas aplicaciones funcionales todavía estoy seguro de muchas cosas en el lenguaje C# como buenas prácticas de código y usando muchas de las palabras clave, etc ..
C# clases; Sé lo que puedo hacer con ellos, sé sobre Constructores y Destructores, Instanciación y Propiedades, pero no estoy seguro de cuando Debería usarlos. Hasta ahora he escrito todos de mi código en mi archivo Form1.cs dentro de diferentes métodos. Estos métodos hacen una variedad de cosas diferentes con API completamente diferentes. Esto obviamente significa que tratar de mantener ese código puede ser bastante difícil y me resulta cada vez más frustrante encontrar cualquier cosa dentro de mi Form1.cs.
Mi pregunta a ustedes, ¿debería dividir mi código en diferentes clases? Intenté dividir las cosas relacionadas con SqlConnection y SqlCommands en una clase separada, pero sin crear una instancia de la misma clase varias veces en Form1.cs no puedo ver que esto sea más fácil o beneficioso.
He estado intentando juntar una nueva aplicación, pero esta vez manteniendo la funcionalidad en su propia clase, esperaba que alguien me dijera que soy estúpido y lo estoy haciendo mal o al menos que me dé alguna orientación.
Esta aplicación cargará eventualmente mi cadena de conexión desde App.Config, se conectará a una base de datos SQL y completará un DataSet con múltiples tablas de la base de datos. Esto de ninguna manera es funcional ya que no entiendo todo el tema de Clases.
Muchas gracias :)
partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string myConnectionString;
private void Form1_Load(object sender, System.EventArgs e)
{
AppConfig cfg = new AppConfig();
if (cfg.loadConfig())
{
myConnectionString = cfg.myConnectionString();
}
if (!String.IsNullOrEmpty(myConnectionString))
{
SQLConn SQL = new SQLConn();
if (SQL.createConnection(myConnectionString))
{
MessageBox.Show("Connected!");
}
}
}
}
class myDataSet
{
DataSet DataSet()
{
DataSet ds = new DataSet();
SQLConn sql = new SQLConn();
return ds;
}
public void fillData()
{
try
{
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM hardware");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
class SQLConn : IDisposable
{
SqlConnection sqlConn;
public bool createConnection(string myConnectionString)
{
sqlConn = new SqlConnection();
sqlConn.ConnectionString = myConnectionString;
try
{
sqlConn.Open();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return false;
}
public void Dispose()
{
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
sqlConn.Dispose();
}
}
}
class AppConfig
{
Configuration cfg;
public bool loadConfig()
{
try
{
cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (!File.Exists(cfg.FilePath))
{
MessageBox.Show("No configuration file");
}
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
return false;
}
public string myConnectionString()
{
string connectionString = ConfigurationManager.ConnectionStrings["IT_ProjectConnectionString"].ConnectionString;
return connectionString;
}
}
Necesita leer más acerca de la Programación Orientada a Objetos y los patrones de diseño posteriores – Habib
Cuando * usted * desea crear un nuevo * tipo *. – adatapost
Su código está lleno de clases. ¿Estás preguntando cuándo ponerlos en sus propios archivos? Tengo que estar de acuerdo con @Habib, tienes un par de cosas que desaprender aquí. –