Ich bin relativ neu in der C# -Sprache, aber mit viel Hilfe von Google-Suchen und Stack Overflow habe ich bereits eine Reihe von Apps gemacht, die mit Office, System Services, Prozesse, WMI, SQL, Linq und Active arbeiten Verzeichnis ...Wann sollten Klassen in C# verwendet werden?
Obwohl trotz Erfolg hat mit diesen Anwendungen funktional immer bin ich immer noch unsicher über viele Dinge in der Sprache C# wie gute Code der Praxis und mit vielen Suchbegriffen etc ..
C# Klassen; Ich weiß, was ich mit ihnen tun kann, ich weiß über Konstruktoren und Destruktoren, Instantiierung und Eigenschaften, aber ich bin unsicher von , wenn ich sie verwenden sollte. Bisher habe ich alle meines Codes in meiner Form1.cs-Datei in verschiedenen Methoden geschrieben. Diese Methoden machen eine Reihe verschiedener Dinge mit völlig verschiedenen APIs. Dies bedeutet natürlich, dass der Versuch, diesen Code aufrechtzuerhalten, ziemlich schwierig werden kann und ich finde es zunehmend frustrierend, finden Sie alles in meinem Form1.cs.
Meine Frage an euch ist, sollte ich meinen Code in verschiedene Klassen aufteilen? Ich habe versucht, Sachen in Bezug auf SqlConnection und SqlCommands in eine separate Klasse aufzuteilen, aber ohne dieselbe Klasse mehrfach in Form1.cs zu instanziieren. Ich kann nicht sehen, dass dies einfacher oder besser ist.
Ich habe versucht, eine neue App zusammen zu stellen, aber diesmal Funktionalität in seiner eigenen Klasse zu halten, ich hatte gehofft, jemand könnte mir entweder sagen, ich bin dumm und mache es falsch oder zumindest gebe mir eine Anleitung.
Diese App lädt schließlich meine Verbindungszeichenfolge aus App.Config, stellt eine Verbindung zu einer SQL-Datenbank her und füllt ein DataSet mit mehreren Tabellen aus der Datenbank. Das ist auf keinen Fall funktional, da ich nicht in der Lage bin, die gesamte Klassenfrage zu verstehen.
Vielen Dank :)
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;
}
}
Sie müssen mehr über objektorientierte Programmierung und spätere Entwurfsmuster lesen. – Habib
Wenn * Sie * einen neuen * Typ * erstellen möchten. – adatapost
Ihr Code ist übersät mit Klassen. Fragen Sie, wann Sie sie in ihre eigenen Dateien einfügen sollen? Du musst mit @Habib einverstanden sein, du hast hier ein paar Dinge zu verlernen. –