Ich baue eine Buchbibliothek App, ich habe ein abstraktes Buch Klasse, zwei Arten von abgeleiteten Bücher und zwei Enums, die das Genre des Buches speichern wird. Jedes Buch kann zu einem Genre oder mehr gehören.die richtige Liste von Enums aus 2 abgeleiteten Klassen auswählen
abstract public class Book
{
public int Price { get; set; }
...
}
public enum ReadingBooksGenre
{
Fiction,
NonFiction
}
public enum TextBooksGenre
{
Math,
Science
}
abstract public class ReadingBook : Book
{
public List<ReadingBooksGenre> Genres { get; set; }
}
abstract public class TextBook : Book
{
public List<TextBooksGenre> Genres { get; set; }
}
Jetzt möchte ich die Rabatte speichern basiert auf dem Buch Genres (ohne Doppel Rabatte, nur der höchste Rabatt berechnet wird), so dass ich denke über zwei Wörterbücher zu machen, die alle Rabatte für jedes Genre sparen , wie folgt aus:
Dictionary<ReadingBooksGenre, int> _readingBooksDiscounts;
Dictionary<TextBooksGenre, int> _textBooksDiscounts;
So, jetzt muss ich das Genre von jedem Buch, um den Check den höchsten Rabatt zu finden, gibt es einen besseren Weg, es zu tun, als:
private int GetDiscount(Book b)
{
int maxDiscount = 0;
if (b is ReadingBook)
{
foreach (var genre in (b as ReadingBook).Genres)
{
// checking if the genre is in discount, and if its bigger than other discounts.
if (_readingBooksDiscounts.ContainsKey(genre) && _readingBooksDiscounts[genere]>maxDiscount)
{
maxDiscount = _readingBooksDiscounts[genere];
}
}
}
else if (b is TextBook)
{
foreach (var genre in (b as TextBook).Genres)
{
if (_textBooksDiscounts.ContainsKey(genre) && _textBooksDiscounts[genere]>maxDiscount)
{
maxDiscount = _textBooksDiscounts[genere];
}
}
}
return maxDiscount;
}
th Gibt es eine Möglichkeit, das richtige Wörterbuch auszuwählen, ohne nach dem Typ zu suchen? oder vielleicht sogar eine Möglichkeit, es ohne die Wörterbücher zu tun, oder mit einem? vielleicht irgendwie Buchtyp mit der Enum verbinden?
wird sich freuen, irgendwelche Verbesserungsvorschläge zu hören.
(es gibt eine Menge von mehr Rabatte basierend auf Bücher Name, Datum und Autor. Auch einige weitere Buchtypen, deshalb ist diese Art und Weise mir scheint nicht richtig)
Danke.
Ich bin ein wenig misstrauisch von einem Modell, in dem Lehrbücher _arenn' eine Untermenge der Sachliteratur nicht sind. Obwohl ich denke, man muss J. K. Rowlings "Quidditch Through The Ages" berücksichtigen ... –