C#Generics,我做错了什么

本文关键字:错了 什么 C#Generics | 更新日期: 2023-09-27 18:25:31

我是Generics的新手,我不明白为什么以下内容不起作用。

我有一个IEnumerable<T>的扩展,叫做Grid,它看起来像

  public static class IEnumberableGridExtension
  {
        public static HelperResult Grid<T>(this IEnumerable<T> gridItems, Action<GridView<T>> thegrid) 
        {
            ........
        }
   }

比方说,我的剃须刀模型中有一个变量叫"Products",它是类型List<Product>,所以我试着做

@Model.Products.Grid<Product>(grid=>{
...
});

它声明"无法将方法组"Grid"转换为非委托类型"object"。您打算调用该方法吗?",带有红色下划线的"@Model.tasks.Grid"。

有趣的是,visual studio编译,一切都很好。当然,如果我只是做

@Model.Products.Grid(grid=>{
...
});

一切都很好。

C#Generics,我做错了什么

Razor解析器正在解释<和>作为普通HTML标记。您可以避免将调用包装在括号中的问题:

@(Model.Products.Grid<Product>(grid=>{
...
}))

你可以在这里找到更多信息:如何在Razor视图文件中使用通用语法?