using System; using System.Linq; using System.Collections.Generic; public class Test { class Foo { public List field1; public List field2; } public static void Main() { var t = typeof(Foo); var g = t.GetGenericTypeDefinition(); var a = g.GetGenericArguments(); foreach (var f in g.GetFields()) { var ft = f.FieldType; if (!ft.IsGenericType) continue; var da = ft.GetGenericArguments(); if (da.Any(xt => a.Contains(xt))) { Console.WriteLine("Field {0} uses generic type parameter", f.Name); } else { Console.WriteLine("Field {0} does not use generic type parameter", f.Name); } } } }