mshtml и CLS-соответствие

Я наблюдаю странное поведение с mshtml и CLS-совместимостью.

У меня есть сборка с пометкой CLSCompliant(правда). Эта сборка не предоставляет публично никаких типов из 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.

Может ли кто-нибудь предложить какое-либо понимание того, что здесь происходит? Потому что для меня ничего из этого не нарушает соответствие CLS.

PS Когда я говорю, что нарушает соответствие CLS, выдается 167 предупреждений о каждом типе в пространстве имен mshtml, которое начинается с подчеркивания или аналогичных нарушений CLS.

Благодарю.

0 ответов

Другие вопросы по тегам