CA1057: String URI sobrecargas chamar System. URI sobrecargas
TypeName |
StringUriOverloadsCallSystemUriOverloads |
CheckId |
CA1057 |
<strong>Categoria</strong> |
Microsoft.design |
Alteração significativa |
Não-separável |
Causa
Um tipo declara sobrecargas do método só diferem a substituição de um parâmetro de seqüência de caracteres com um System.Uri parâmetro e a sobrecarga que aceita o parâmetro de seqüência de caracteres não chama a sobrecarga que utiliza o Uri parâmetro.
Descrição da regra
Como as sobrecargas de diferem apenas pela seqüência de caracteres /Uri a seqüência de caracteres do parâmetro, será adotada para representar um identificador de recursos uniforme (URI).Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança.O Uri classe fornece esses serviços de maneira segura e protegida.Para obter os benefícios da Uri classe, a sobrecarga de seqüência de caracteres deve chamar o Uri usando o argumento de seqüência de caracteres de sobrecarga.
Como corrigir violações
Reimplementar o método que usa a representação de seqüência de caracteres do URI para que ele cria uma instância do Uri usando o argumento de seqüência de caracteres de classe e então passa a Uri o objeto para a sobrecarga que tem o Uri parâmetro.
Quando suprimir avisos
É seguro eliminar um aviso esta regra se o parâmetro de seqüência de caracteres não representa um URI.
Exemplo
O exemplo a seguir mostra uma sobrecarga de seqüência de caracteres corretamente implementada.
Imports System
Namespace DesignLibrary
Public Class History
Sub AddToHistory(uriString As String)
Dim newUri As New Uri(uriString)
AddToHistory(newUri)
End Sub
Sub AddToHistory(uriType As Uri)
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class History
{
public void AddToHistory(string uriString)
{
Uri newUri = new Uri(uriString);
AddToHistory(newUri);
}
public void AddToHistory(Uri uriType) { }
}
}
#using <system.dll>
using namespace System;
namespace DesignLibrary
{
public ref class History
{
public:
void AddToHistory(String^ uriString)
{
Uri^ newUri = gcnew Uri(uriString);
AddToHistory(newUri);
}
void AddToHistory(Uri^ uriType) { }
};
}
Regras relacionadas
CA2234: Objetos System. URI de passagem em vez de seqüências de caracteres
CA1056: Propriedades URI não devem ser seqüências de caracteres
CA1054: Parâmetros da URI não devem ser seqüências de caracteres
CA1055: O URI retornar valores não devem ser seqüências de caracteres