【发布时间】:2014-03-20 19:40:17
【问题描述】:
将对象转换为 IEnumerable 时出现以下异常。
这是我使用 VS2008 构建并打算在 IE8 上运行的自动化项目的一部分,现在我正在尝试使用 VS2010 并在 IE9 上运行。
System.InvalidCastException:无法转换类型的 COM 对象 'System.__ComObject' 到接口类型 'System.Collections.IEnumerable'。此操作失败,因为 对具有 IID 的接口的 COM 组件上的 QueryInterface 调用 “{496B0ABE-CDEE-11D3-88E8-00902754C43A}”由于以下原因而失败 错误:'不支持此类接口(来自 HRESULT 的异常: 0x80004002 (E_NOINTERFACE))'且COM组件不支持 IDispatch::Invoke 调用 DISPID_NEWENUM。
HTMLDocument doc = some htmldocument
IHTMLElement ele = doc.getElementById("some property");
int iTab = (int)ele.getAttribute("someproperty", 0);
object oTab = ele.getAttribute("property", 1);
IEnumerable xyz = (IEnumerable)oTab;
System.Collections.IEnumerator index = xyz.GetEnumerator();
【问题讨论】:
-
它在 IE8 上工作,但它可能在 IE9 上失败
-
我又检查了一遍,相同的代码适用于 IE8,但在 IE9 上出现错误。
标签: c# casting automation mshtml