je la déclaration de classe suivante:Pourquoi C# ne supporte-t-il pas un objet avec une interface en paramètre?
public class EntityTag : BaseEntity, ITaggable
J'ai une méthode d'aide Html:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
Ceci est mon ASP.NET MVC ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<EDN.MVC.Models.EntityTag>>" %>
<%@Import Namespace="EDN.MVC.Helpers" %>
<%= Html.TagCloud(Model, 6, "entity-tags") %>
Lorsque je passe une collection IQueryable à l'ascx, j'obtiens cette erreur:
Compil Message d'erreur: CS1928: 'System.Web.Mvc.HtmlHelper>' ne contient pas de définition pour 'TagCloud' et la meilleure méthode de surcharge 'EDN.MVC.Helpers.EdnHelpers.TagCloud (System.Web.Mvc.HtmlHelper, System.Linq.IQueryable, int, string) » a des arguments invalides
Si je tente de convertir explicitement la collection d'objets avec ceci:
public static string TagCloud(this HtmlHelper html, IQueryable<Object> taggables, int numberOfStyleVariations, string divId)
{
var tags = new List<ITaggable>();
foreach (var obj in taggables)
{
tags.Add(obj as ITaggable);
}
return TagCloud(html, tags.AsQueryable(), numberOfStyleVariations, divId);
}
je reçois la même erreur - les valeurs que je suis de passage dans ne sont pas aimés par le compilateur.
Mon classe EntityTag ne devrait-elle pas automatiquement être prise en charge en tant que IQueryable? Qu'est-ce que je rate? Ça doit être quelque chose d'évident. (Je l'espère).
ITaggable hérite-t-il de IQueryable? –
Quel est le paramètre du modèle que vous passez? Je devine que ce paramètre ne peut pas être converti en IQueryable, pour une raison quelconque. –
Tony: EntityTag descend de BaseEntity et implémente ITaggable –