The type parameter cannot be used with type arguments
There is no such thing as a TPresenter<TView>
it is meaningless. TPresenter is just a placeholder, until it is constrained by the where it could be anything, e.g. there is no int<tview>
so you can't have that. Once you add the constraint it means it has to be a BasePresenter<TView>
or some derived type so it will always be a Something<TView>
so again TPresenter<TView>
is meaningless.
Basically there's no way of saying that a type parameter is itself a generic type with a particular number of type parameters - which you need to be able to do in order to make TPresenter<TView>
make sense.
It's not clear what you mean by making it work via a reference parameter - whatever type you used for that ref parameter should be fine as a return type too. My guess is that it was just of type TPresenter
, not TPresenter<TView>
.