0

这是我的演讲者课程:

public class ListPresenter<TViewInterface, TContext> : Presenter<TViewInterface, TContext>
        where TViewInterface : IContextView<TContext>, IListView
        where TContext : IObservableObject
{
     protected override void OnInitializePresentationComplete(dynamic data)
     {
    View.ViewPresenter = (ListPresenter<TViewInterface, TContext>)this;
     }
}

这是我在视图中定义属性的方式:

public ListPresenter<IListView, IObservableObject> ViewPresenter { get; set; }

ViewPresenter 属性上抛出的编译时异常是“类型 IListView 不能用作泛型类型或方法中的类型参数 TViewInterface ListPresenter<TViewInterface, TContect>。没有从 IListView 到的隐式引用转换IContextview<IObservableObject>

我是否错误地定义了 ViewPresenter?还是我没有正确投射?或两者?

4

1 回答 1

0

我相信这与您的通用 where 约束有关。您将 TViewInterface 限制为 TContext 的 IContextView 和 IListView,但这并不意味着 IListView 是 TContext 的 IContextView,只是您使用的任何类型都是...然后错误清楚地表明您正在尝试使用一个 IListView 作为 TViewInterface 类型,但由于它没有实现 IContextView 接口,所以它失败了。

于 2013-06-20T21:13:30.227 回答