Ich habe eine Methode, die Tage Namen von einem bestimmten Objekt, wie folgt extrahieren:Machen Sie eine Methode generische
private string ExtractWeekDayNames(FiscalReceipt fiscalReceipt)
{
string retVal = "";
Dictionary<string, bool> WeekDays =
new Dictionary<string, bool>() {
{ "Sun", fiscalReceipt.Sunday },
{ "Mon", fiscalReceipt.Monday },
{ "Tue", fiscalReceipt.Tuesday },
{ "Wed", fiscalReceipt.Wednesday },
{ "Thu", fiscalReceipt.Thursday },
{ "Fri", fiscalReceipt.Friday },
{ "Sat", fiscalReceipt.Saturday }
};
//Find week days
foreach (var item in WeekDays)
{
if (item.Value == true)
retVal += item.Key + ",";
}
if (!string.IsNullOrEmpty(retVal))
retVal = retVal.Substring(0, retVal.Length - 1);
return retVal;
}
Ich habe auch ein ähnliches Verfahren, die die gleichen Operationen führen aber eine andere Art von Parametern mit wie:
private string ExtractWeekDayNames(NonFiscalReceipt nonFiscalReceipt)
{
...
}
auch hat die NonFiscalReceipt die Eigenschaften Sonntag, Montag, usw.
Wie kann ich ersetzen diese 2 Methoden mit nur einem?
Sind Fiskalrecipent und nonfiscalreceipt vom gleichen Typ der Basisklasse abgeleitet? Wenn ja, können Sie das Argument als Basisklasse verwenden. – JonH
Sie können das verkürzen, um 'string.Join (", ", WeekDays.Where (kvp => kvp.Value) zurückzugeben. Wählen Sie (kvp => kvp.Key));' – juharr
Sie können z. Erstellen Sie eine Schnittstelle mit den Wochentageigenschaften und lassen Sie sie von beiden Klassen implementieren. Dann können Sie die Schnittstelle an Ihre Methode anstelle der aktuellen Klasse übergeben. – Philippe