我是泛型的一些新手,我无法弄清楚为什么以下内容不起作用。
我有 IEnumerable<T>
的分机, 称为 Grid,它看起来像这样
public static class IEnumberableGridExtension
{
public static HelperResult Grid<T>(this IEnumerable<T> gridItems, Action<GridView<T>> thegrid)
{
........
}
}
比如说,我的 Razor 模型中有一个名为“Products”的变量,它的类型是 List<Product>
, 所以我试着去做
@Model.Products.Grid<Product>(grid=>{
...
});
它声明“无法将方法组‘Grid’转换为非委托(delegate)类型‘object’。您打算调用该方法吗?”,“@Model.tasks.Grid”带有红色下划线。
有趣的是,visual studio编译,一切正常。当然,如果我只是这样做
@Model.Products.Grid(grid=>{
...
});
一切都很好。
最佳答案
Razor 解析器将 < 和 > 解释为普通的 HTML 标记。 您可以避免将调用包装在括号中的问题:
@(Model.Products.Grid<Product>(grid=>{
...
}))
您可以在此处找到更多信息:How to use generic syntax inside a Razor view file?
关于C#泛型,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961005/