Ich habe die folgende Klassendeklaration:Warum unterstützt C# kein Objekt mit einer Schnittstelle als Parameter?
public class EntityTag : BaseEntity, ITaggable
ich eine HTML-Helfer-Methode haben:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
Dies ist meine 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") %>
Als ich in geben eine IQueryable-Sammlung an die Ascx, bekomme ich diesen Fehler:
Compil er Fehlermeldung: CS1928: 'System.Web.Mvc.HtmlHelper>' enthält keine Definition für 'TagCloud' und die beste Erweiterungsmethode 'EDN.MVC.Helpers.EdnHelpers.TagCloud (System.Web.Mvc.HtmlHelper, System.Linq.IQueryable, int, string)‘hat einige ungültige Argumente
Wenn ich versuche, explizit mit diesem die Objektsammlung zu konvertieren:
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);
}
ich den gleichen Fehler - die Werte ich vorbei in sind nicht vom Compiler gefallen.
Sollte meine EntityTag-Klasse nicht automatisch als IQueryable unterstützt werden? Was vermisse ich? Es muss etwas Offensichtliches sein. (Hoffe ich).
erbt ITaggable von IQueryable? –
Was ist der Modellparameter, den Sie weitergeben? Ich vermute, dass Parameter aus irgendeinem Grund nicht in IQueryable konvertiert werden können. –
Tony: EntityTag stammt von BaseEntity ab und implementiert ITaggable –