2013-07-31 15 views
6

Jestem czymś nowym w Generics i nie mogę zrozumieć, dlaczego poniższe nie działają.C# Generics, co robię źle?

Mam rozszerzenie IEnumerable<T>, zwana siatka i wygląda tak

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

    } 

Say mam zmienną w moim brzytwa model o nazwie „Produkty” i jest to rodzaj List<Product>, więc starałem się zrobić

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

stwierdza on „nie można przekonwertować grupy metody„siatki”do typu non-delegata«przedmiot». Czy zamierzają wywołać metodę?”, Z«@ Model.tasks.Grid»czerwony podkreślone.

Najśmieszniejsze jest to, visual studio kompiluje, wszystko jest w porządku. Oczywiście, jeśli po prostu zrobić

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

To wszystko jest w porządku

+0

Stwierdziłaś, że jest to lista rodzaju ogólnego "Produkty". Czy to była literówka? Jeśli nie, musisz zmienić pierwszą linię na '@Model.Products.Grid (... ' – John

+0

Niestety John.To singular 'Product'. Naprawię go w poście – Liming

+0

Co stanie się, jeśli przekażesz null dla akcji? –

Odpowiedz

7

maszynki parser interpretuje < i> jako zwykłe znaczniki HTML można uniknąć tego problemu zawijania połączenie w nawiasie..

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

Możesz znaleźć dodatkowe informacje tutaj: How to use generic syntax inside a Razor view file?

+0

BINGO! Dziękuję bardzo @ccuesta !!!! Szukałem już około 2 godzin, mój Boże! Microsoft naprawdę powinien to naprawić, nie mogę uwierzyć, że to coś tak prostego! – Liming

Powiązane problemy