Ich versuche, eine Methode mit einem optionalen generischen Typ zu erstellen, um die Anzahl der Abfragen in einer SQL-Datenbank zu minimieren. (Keine Notwendigkeit, eine Abfrage auszuführen, wenn die Daten bereits vorhanden ist)Optionale generische Typen ohne manuell angeben zu müssen Typ
// Returns proper DataTable for selected Schedule
public static DataTable BuildReportTable<T>(Report report, List<T> InputList = null)
{
switch (report.ReportBase)
{
// Work Order Report
case 1:
List<ReportWorkOrder> wos = new List<ReportWorkOrder>();
if (InputList == null)
{
// Build WorkOrderReportList for report if none was passed
PullSQLData(() =>
{
wos = MPulseQueries.WorkOrderTableQuery();
}, 30, 46, "Failed to pull Work Order Data to generate table");
}
else
{
// If WorkOrderReportList was passed, use it
wos = InputList as List<ReportWorkOrder>;
}
switch (WOFilters[report.Filter][0])
{
case 0: //If all work orders report
return AllWOTable(report, wos);
case 1: //If open non PM work orders report
return OpenNonPMTable(report, wos);
case 2: //If open PM work orders report
return PMTable(report, wos);
case 3: //If open fluid change work orders report
return FluidChangeTable(report, wos);
case 4: //If custom filter work orders report
return CustomFilterTable(report, wos);
default:
return new DataTable();
}
default:
return new DataTable();
}
}
Dieser Code kompiliert ohne Probleme und führt wie erwartet. Das einzige Problem, das ich habe, ist, dass, um diese Methode ohne den optionalen Parameter aufzurufen, ich einen Typ manuell angeben muss.
DataTable DisplayedWorkOrders = BuildReportTable<ReportWorkOrder>(report);
Also, für meine Frage: Gibt es eine Möglichkeit, dass ich einen Standard-Typen in dem Verfahren festgelegt, so dass ich angeben muß jedes Mal, wenn ich es nicht nennen?
Ich kann damit leben. Das hält es beim Aufruf der Methode sauber, was mein Ziel ist. Vielen Dank! –
Ich bin auch kein Fan des unbenutzten Typparameters, aber besser versteckt hier als im Gegensatz zum Zeitpunkt des Aufrufs. –
Ja. Aus dem Auge, aus dem Sinn. –