public virtual void GenerateDeck(CardFactory factory) { List <Card> card = new List <Card>(); foreach (CardRank rank in Enum.GetValues(typeof(CardRank))) { foreach (CardValue value in Enum.GetValues(typeof(CardValue))) { card.Add(factory.CreateCard(rank, value)); } } cardDeck = card; }