我有以下课程
public abstract class BaseViewPresenter { }
public abstract class BaseView<T> : UserControl
where T : BaseViewPresenter { }
public class LoginPresenter : BaseViewPresenter { }
public partial class LoginView : BaseView<LoginPresenter> { }
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的方法(简化)
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>;
}
Run Code Online (Sandbox Code Playgroud)
当我使用LoginPresenter的实例调用它时
var login = new LoginPresenter();
var ctl = …
Run Code Online (Sandbox Code Playgroud)