Tengo la siguiente declaración de la clase:¿Por qué c no admite un objeto con una interfaz como parámetro?
public class EntityTag : BaseEntity, ITaggable
tengo un método de ayuda HTML:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
Esta es mi ascx ASP.NET MVC:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<EDN.MVC.Models.EntityTag>>" %>
<%@Import Namespace="EDN.MVC.Helpers" %>
<%= Html.TagCloud(Model, 6, "entity-tags") %>
Cuando paso en una colección de IQueryable para el ascx, obtengo este error:
Compil er Mensaje de error: CS1928: 'System.Web.Mvc.HtmlHelper>' no contiene una definición para 'TagCloud' y la mejor sobrecarga del método de extensión 'EDN.MVC.Helpers.EdnHelpers.TagCloud (System.Web.Mvc.HtmlHelper, System.Linq.IQueryable, int, string)' tiene algunos argumentos no válidos
Si trato de convertir explícitamente la colección de objetos con esto:
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);
}
me sale el mismo error - los valores que estoy pasando en no son del agrado del compilador.
¿No debería mi clase EntityTag ser admitida automáticamente como IQueryable? ¿Qué me estoy perdiendo? Tiene que ser algo obvio. (Espero).
¿ITaggable hereda de IQueryable? –
¿Cuál es el parámetro del modelo que está pasando? Supongo que ese parámetro no se puede convertir a IQueryable, por alguna razón. –
Tony: EntityTag desciende de BaseEntity e implementa ITaggable –