tôi có khai báo lớp sau:Tại sao không hỗ trợ một đối tượng với giao diện như một tham số?
public class EntityTag : BaseEntity, ITaggable
Tôi có một phương pháp helper Html:
public static string TagCloud(this HtmlHelper html, IQueryable<ITaggable> taggables,
int numberOfStyleVariations, string divId)
Đây là ascx ASP.NET MVC của tôi:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<EDN.MVC.Models.EntityTag>>" %>
<%@Import Namespace="EDN.MVC.Helpers" %>
<%= Html.TagCloud(Model, 6, "entity-tags") %>
Khi tôi vượt qua trong một bộ sưu tập IQueryable cho ascx, tôi nhận được lỗi này:
Compil er Thông báo lỗi: CS1928: 'System.Web.Mvc.HtmlHelper>' không chứa định nghĩa cho 'TagCloud' và phương thức mở rộng tốt nhất quá tải 'EDN.MVC.Helpers.EdnHelpers.TagCloud (System.Web.Mvc.HtmlHelper, System.Linq.IQueryable, int, string)' có một số đối số không hợp lệ
Nếu tôi cố gắng để chuyển đổi một cách rõ ràng bộ sưu tập tượng với điều này:
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);
}
tôi nhận được cùng một lỗi - các giá trị tôi đi qua không thích bởi trình biên dịch.
Lớp EntityTag của tôi có được hỗ trợ tự động như IQueryable không? Tôi đang thiếu gì? Nó phải là một cái gì đó hiển nhiên. (Tôi hy vọng).
ITaggable có thể kế thừa từ IQueryable không? –
Thông số mô hình bạn đang truyền là gì? Tôi đoán rằng tham số không thể được chuyển đổi thành IQueryable, vì một lý do nào đó. –
Tony: EntityTag xuống từ BaseEntity và thực hiện ITaggable –