mshtml和CLS合规性

时间:2012-09-17 09:15:05

标签: mshtml cls-compliant microsoft.mshtml

我正在目睹mshtml和CLS合规性的一些奇怪行为。

我有一个标记为CLSCompliant(true)的程序集。此程序集公开显示mshtml中的任何类型。

我可以很容易地使代码符合CLS,但有些事情似乎打破了它:

  1. 介绍“使用mshtml;”每次我使用一个类型时,语句而不是手动引用命名空间。出于某种原因,这会破坏CLS合规性。

  2. 如果我转换以下内容:

        var doc = webBrowser.Document as mshtml.HTMLDocument;
    
        var scriptNode = doc.createElement("SCRIPT") as mshtml.IHTMLScriptElement;
    
        var nodes = doc.getElementsByTagName("head");
    
        foreach (var head in nodes)
        {
            var htmlHead = (mshtml.HTMLHeadElement)head;
            if (htmlHead != null)
                htmlHead.appendChild((mshtml.IHTMLDOMNode)scriptNode);
        }
    

    到此:

        foreach (var head in nodes.OfType<mshtml.IHTMLDOMNode>())
            head.appendChild((mshtml.IHTMLDOMNode)scriptNode);
    

    这似乎也打破了CLS合规性。

  3. 任何人都可以提供有关此处可能发生的事情的任何见解吗?因为对我而言,这一切都没有打破CLS合规性。

    PS当我说违反CLS合规性时,会针对以下划线或类似的CLS违规开头的mshtml命名空间中的每种类型引发167条警告。

    感谢。

0 个答案:

没有答案