¿Cómo emitir correctamente una clase a una clase abstracta cuando se usan tipos genéricos?

Tengo las siguientes clases

public abstract class BaseViewPresenter { }
public abstract class BaseView<T> : UserControl
    where T : BaseViewPresenter { }

public class LoginPresenter : BaseViewPresenter { }
public partial class LoginView : BaseView<LoginPresenter> {  }

Tengo un método que se ve así (simplificado)

public BaseView<BaseViewPresenter> Resolve(BaseViewPresenter model)
{
    var type = model.GetType();
    var viewType = _dataTemplates[type];

    // Correctly creates BaseView object
    var control = Activator.CreateInstance(viewType);

    // Fails to cast as BaseView<BaseViewPresenter> so returns null
    return control as BaseView<BaseViewPresenter>;
}

Cuando llamo a esto usando instancias de LoginPresenter

var login = new LoginPresenter();
var ctl = Resolve(login);

La líneaActivator.CreateInstance(viewType)&nbsp;resuelve correctamente en una nueva instancia de miLoginView, sin embargocontrol as BaseView<BaseViewPresenter>&nbsp;no puede hacer el lanzamiento correctamente, por lo que vuelvenull.

¿Hay alguna manera de emitir correctamente elcontrol&nbsp;dentroBaseView<BaseViewPresenter>&nbsp;sin usar genéricos de tipo específico?

Ya queLoginView&nbsp;hereda deBaseView<LoginPresenter>yLoginPresenter&nbsp;hereda deBaseViewPresenter, Supongo que hay una manera de convertirLoginView&nbsp;aBaseView<BaseViewPresenter>.

Estoy atascado con el uso de .Net 3.5