using System.Collections.Generic;
class ProductDataType : GenericDataType {}
class ContentDataType : GenericDataType {}
class ParserdTypeProduct : ParserdType{}
class ParserdTypeContent : ParserdType{}
public List<ParserdType> parseAll(List<GenericDataType> list) {
var resultList = new List<ParserdType>();
foreach(var item in list) {
var parsed = parse(item);
public ParserdType parse(ContentDataType o) {
Console.WriteLine("doing something");
return new ParserdTypeProduct();
public ParserdType parse(ProductDataType o) {
Console.WriteLine("doing something else");
return new ParserdTypeContent();
public ParserdType parse(GenericDataType o) {
Console.WriteLine("doing nothing");
public ParserdType parse(object o) {
Console.WriteLine("alé");
public static void Main()
var list = new List<GenericDataType>{
var parser = new DataTypearser();