c#无法将带有[]的索引应用于类型为' object'的表达式

时间:2017-03-25 11:34:04

标签: c#

我前段时间写了一段有用的代码:

IHTMLDocument3 doc3 = (IHTMLDocument3)doc;
            IHTMLDocument7 doc7 = (IHTMLDocument7)doc;

            IHTMLElementCollection elc;
            IHTMLElement el;
            IHTMLElement chld;
            IHTMLDOMNode dn;

if ((chld = el.children[1].children[0].children[1]) != null
                && chld.tagName == "A"
                )

现在C#(表达2008,.NET 3.5)抱怨说 无法使用[]将索引应用于' object'

类型的表达式

指的是el.children [1] ....

会出现什么问题?我知道之前有效。 感谢任何线索,

更新: 我刚刚在VS2012进行了测试,可以正常工作,编译和运行。

private void Form1_Load(object sender, EventArgs e)
{
    IHTMLElement test = null;

    IHTMLElement xxx = test.children[1];

}

证实: VS2008中的相同代码无效。唯一的区别是我必须通过使用不同的VS命令提示(每个用于.NET版本)为每个项目重新生成mshtml.dll。

使用相同的命令完成生成:

sn -k mykey.snk
tlbimp.exe /out:mshtml.dll /keyfile:mykey.snk mshtml.tlb

我真的不明白......任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

似乎界面IHtmlElement中没有名为儿童集合属性,请检查IHtmlElement属性here我认为您可以使用而是AllChildren属性。