public static Type ReflectGenTypeArgument(this IGen gen) { var reflectedGenType = gen .GetType() .GetInterfaces() .Where(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IGen <>)) .SingleOrDefault(); return(reflectedGenType.GetGenericArguments().Single()); }