设置presenter属性throws'不能用作类型参数'异常

时间:2013-06-20 20:18:48

标签: c# presenter

这是我的演讲者课程:

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不能用作泛型类型或方法ListPresenter<TViewInterface, TContect>中的类型参数TViewInterface。没有从IListView到IContextview<IObservableObject>的隐式引用转换

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

1 个答案:

答案 0 :(得分:0)

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