【发布时间】:2011-03-02 05:14:53
【问题描述】:
我试图了解为什么以下内容无法编译。编译器在 CreatePresenter 尝试设置 View 属性的那一行报错:
无法将类型“Sandbox.Program.MyView”隐式转换为“TView”。
我知道作业的上下文没有意义,更多的是为了说明。任何帮助都会很棒!
interface IView {
}
class Presenter<T> where T : IView {
public T View { get; set; }
}
class MyView : IView {
}
class MyPresenter : Presenter<MyView> {
public MyPresenter() { }
}
class ViewBase<TPresenter, TView>
where TPresenter : Presenter<TView>, new()
where TView : IView {
public TPresenter Presenter { get; private set; }
void CreatePresenter() {
this.Presenter = new TPresenter();
this.Presenter.View = new MyView();
}
}
【问题讨论】:
-
您使用的是什么版本的 .NET?
-
演示者的视图必须始终是具体
MyView的实例吗? -
@Michael - 他发布了它。无法转换类型。
-
@BoltClock 就像我说的,这仅用于说明目的。任务真的是“这个”