Como converter corretamente uma classe para uma classe abstrata ao usar tipos genéricos?

Eu tenho as seguintes aulas

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

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

Eu tenho um método que se parece com isso (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>;
}

Quando eu chamo isso usando uma instância do LoginPresenter

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

A linhaActivator.CreateInstance(viewType) resolve corretamente em uma nova instância do meuLoginView, Contudocontrol as BaseView<BaseViewPresenter> não pode fazer o elenco corretamente, então retornanull.

Existe uma maneira de transmitir corretamente ocontrol para dentroBaseView<BaseViewPresenter> sem usar tipos genéricos específicos?

Desde aLoginView herda deBaseView<LoginPresenter>eLoginPresenter herda deBaseViewPresenter, Eu assumiria que há uma maneira de converterLoginView paraBaseView<BaseViewPresenter>.

Estou preso ao uso do .Net 3.5

questionAnswers(3)

yourAnswerToTheQuestion