相关疑难解决方法(0)

在使用类型泛型时如何正确地将类强制转换为抽象类?

我有以下课程

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)

c# reflection .net-3.5

14
推荐指数
2
解决办法
8114
查看次数

标签 统计

.net-3.5 ×1

c# ×1

reflection ×1