public static void Factory() { var bookReaderList = new List <BookReader> { new AdventureBookReader(), new FantasyBookReader(), new HorrorBookReader() }; foreach (var reader in bookReaderList) { Console.WriteLine(reader.GetType().ToString()); reader.DisplayOwnedBooks(); Console.WriteLine(); } var genericReader = new AdventureBookReader(); Book book = genericReader.BuyBook2 <Encyclopedia>(); Console.WriteLine(book.GetType().ToString()); Console.ReadLine(); }
private static void FactoryMethod() { var bookReaderList = new List <BookReader>(); bookReaderList.Add(new AdventureBookReader()); bookReaderList.Add(new FantasyBookReader()); bookReaderList.Add(new HorrorBookReader()); foreach (BookReader reader in bookReaderList) { Console.WriteLine(reader.GetType().ToString()); // Language agnostic solution reader.DisplayOwnedBooks(); Console.WriteLine(); } // C# specific solution using generics var genericReader = new AdventureBookReader(); Book book = genericReader.BuyBook <Encyclopedia>(); Console.WriteLine(book.GetType().ToString()); Console.ReadKey(); }