实现接口的通用功能

时间:2013-05-15 15:22:29

标签: c# generics asp.net-mvc-4 razor

我试图调用一个泛型函数,它实现了一组属性接口。

代码如下:

public bool NeedsRenderAction<M, U>(M parent, U child)
            where M : IVrsnProps
            where U : IVrsnProps
        {
           return true;
        }

我用以下方式称呼它。从剃须刀的角度来看。

bool x = NeedsRenderAction<LayoutVrsn, WidgetVrsn>(Model.SPV, widget);

呼叫甚至没有命中功能。 错误消息:没有从'layoutvrsn对象'到'IVrsnProps'的隐式引用转换

任何有关PLZ ...............

的工作

1 个答案:

答案 0 :(得分:2)

看起来你传递的参数Model.SPV没有实现IVrsnProps接口,你在函数上定义的泛型约束阻止你执行它。从您收到的错误消息来看,SPV属性的类型为object,这显然与IVrsnProps接口无关。

为此,您应该删除此通用约束或使您的SPV属性具有正确的类型:

public IVrsnProps SPV { get; set; }

对于您的第二个参数,当然也是如此。您正在传递一些widget变量,为此,此变量必须是实现IVrsnProps接口的类型。