将对象添加到IList <t>会抛出ArrayTypeMismatchException </t>

时间:2013-03-21 11:33:19

标签: c# exception

我有IList<IHtmlString>我要添加一些元素。由于时间很短,它会抛出ArrayTypeMismatchException,但我不知道为什么。从HttpSessionStateBase添加或访问元素时也会发生这种情况。

public class HtmlList 
{
  private IList<IHtmlString> _listItems = new List<IHtmlString>();

  public void Add(IHtmlString listItem)
  {
    if (listItem != null)
    {
      _listItems.Add(listItem); // here ArrayTypeMismatchException is thrown
    }
  }
}

有人可以向我解释一下吗?为什么在过去的三年里没有发生?从.NET 4.0更改为4.5后,我第一次遇到异常。

堆栈追踪:

  

at System.Collections.Generic.List`1.Add(T item)
     在MyCompany.Web.Mvc.UI.HtmlList.Add(IHtmlString元素)
     at MyCompany.Web.Mvc.Models.CaptchaExtensions.CaptchaImageElement.ToString()
     at MyCompany.Web.Mvc.Models.CaptchaExtensions.CaptchaImageElement.Render(Int32 width,Int32 height)
     在ASP.views_teilnahme_index_aspx .__ RenderContent3(HtmlTextWriter __w,Control parameterContainer)
     在System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)
     在System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
     在System.Web.UI.Control.Render(HtmlTextWriter writer)
     在System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
     在System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)
     在System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
     在System.Web.UI.Control.Render(HtmlTextWriter writer)
     在System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
     在System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)
     在System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
     在System.Web.UI.Page.Render(HtmlTextWriter writer)
     在System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer)
     在System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter适配器)
     在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
     在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)

1 个答案:

答案 0 :(得分:0)

我假设IHtmlString是在System.Web命名空间中定义的。

除非您在代码中的其他位置定义了IHtmlString接口,并且您正在使用IHtmlString接口实现一个类并将其添加到列表

,否则不会发生这种情况

请检查一下,