public interface iC<T, TI>
where T : iB<TI>
where TI : iA
{
List<T> listBinC {get; set; }
}
Here iA
is pulled out as a separate generic parameter, so you can apply a constraint on it (for TI
to be derived from iA
) and then declare B
like this:
class C : iC<B, A>
{
public List<B> listBinC { get; set; }
}