CA1057:字符串 URI 重载调用 System.Uri 重载
适用范围:Visual Studio
Visual Studio for Mac
Visual Studio Code
项 | “值” |
---|---|
RuleId | CA1057 |
Category | Microsoft.Design |
重大更改 | 非中断 |
原因
类型声明方法超载,且不同之处只在于使用 System.Uri 参数替换了字符串参数,采用字符串参数的重载不调用采用 Uri 参数的重载。
规则说明
由于重载的不同之处只在于字符串或 Uri 参数,因此会假定该字符串表示统一资源标识符 (URI)。 URI 的字符串表示形式容易导致分析和编码错误,并且可造成安全漏洞。 Uri 类以一种安全的方式提供这些服务。 为了获得 Uri 类的优点,字符串重载应使用字符串参数调用 Uri 重载。
如何解决冲突
重新实现使用 URI 的字符串表示的方法,以便它使用字符串参数创建 Uri 类实例,然后将 Uri 对象传递到具有 Uri 参数的重载。
何时禁止显示警告
如果参数不表示 URI,可禁止显示此规则的警告。
示例
下面的示例演示正确实现的字符串重载。
using System;
namespace DesignLibrary
{
public class History
{
public void AddToHistory(string uriString)
{
Uri newUri = new Uri(uriString);
AddToHistory(newUri);
}
public void AddToHistory(Uri uriType) { }
}
}