XmlDocument接口解析代码分析警告CA1059

XmlDocument interface to resolve code analysis warning CA1059

我有一个接口,当我 运行 Visual Studio 的代码分析工具时,我得到错误:

CA1059 Members should not expose certain concrete types

Modify member 'ISharedRepository.RunNewsHeadlinesReport(string)' so that it no longer exposes the concrete type 'XmlDocument'. Use IXPathNavigable to represent XML data sources. Ev.Pharma.Business ISharedRepository.cs 8

我的界面是:

public interface ISharedRepository
{
    XmlDocument RunWhatsNewHeadlinesReport();
    XmlDocument RunNewsHeadlinesReport(string reportId);
}

我正在使用 XmlDocument,因为该代码旨在处理一些遗留代码,修改文档的能力至关重要。我很想使用 XDocument,但是有很多代码需要更改才能使用 XDocument,我必须将 XmlDocument 转换为 XDocument 才能使代码正常工作。

我可以在网上找到的建议是使用 IXPathNavigable 接口代替 XmlDocument,但是在这样做时我无法再调用 XmlDocument 方法,因为这些方法不是 IXPathNavigable 接口的一部分。

这个错误对我来说似乎有点毫无意义,因为我从不打算将 XmlDocument 换成不同的具体类型。我应该只抑制错误还是应该以某种方式更改我的代码以消除警告?

只需使用常识。如果您经常使用 XmlDocument 的功能 - 将它留在界面中没问题。那不是“错误”而是建议。即使在这段代码的描述中,analysys 警告(https://msdn.microsoft.com/en-us/library/ms182160.aspx)也指出:

When to Suppress Warnings

It is safe to suppress a message from this rule if the specific functionality provided by the concrete type is required.

因此,如果您像您所说的那样使用 XmlDocument 的特定功能 - 只需抑制它即可。