case1: IEnumrable<T> , T is the type should be resolved
case2: Class<Tclass> , Class<Tclass> as a whole type that should be resolved.
case3: ILogger<T>, ILogger is the type that should be resolved.
for EasyDI, the resolve order should be case 2 => case 3 => case 1