我有以下類聲明:爲什麼c#不支持將接口作爲參數的對象?
public class EntityTag : BaseEntity, ITaggable
我有一個HTML helper方法:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
這是我的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") %>
當我通過一個IQueryable集合到ascx,我得到這個錯誤:
Compil er錯誤消息:CS1928:'System.Web.Mvc.HtmlHelper>'沒有包含'TagCloud'的定義和最佳擴展方法重載'EDN.MVC.Helpers.EdnHelpers.TagCloud(System.Web.Mvc.HtmlHelper, System.Linq.IQueryable,INT,字符串)」有一些無效參數
如果我嘗試顯式轉換對象集合與此:
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);
}
我得到同樣的錯誤 - 我傳遞的價值觀不被編譯器所喜歡。
我的EntityTag類不應該自動支持IQueryable嗎?我錯過了什麼?這肯定是顯而易見的。 (我希望)
ITaggable繼承自IQueryable嗎? – 2010-01-08 01:25:36
你傳遞的模型參數是什麼?我猜這個參數不能轉換爲IQueryable,出於某種原因。 – 2010-01-08 01:26:48
託尼:EntityTag從BaseEntity下降並實現ITaggable – 2010-01-08 18:55:27