mshtml и CLS-соответствие
Я наблюдаю странное поведение с mshtml и CLS-совместимостью.
У меня есть сборка с пометкой CLSCompliant(правда). Эта сборка не предоставляет публично никаких типов из mshtml.
Я могу довольно легко сделать так, чтобы код соответствовал CLS, но некоторые вещи, кажется, нарушают его:
Представляем "использование mshtml;" оператор вместо ссылки на пространство имен вручную каждый раз, когда я использую тип. По какой-то причине это нарушает соответствие CLS.
Если я преобразую следующее:
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.
Благодарю.