CA1057: Sobrecargas URI de seqüência de caracteres chamada 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 que diferem somente de 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 chamar a sobrecarga que utiliza o Uri parâmetro.
Descrição da regra
Como as sobrecargas de diferem apenas pela seqüência de caracteres /Uri parâmetro, será adotada a seqüência de caracteres 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 em uma maneira segura e protegida. Para obter os benefícios da Uri classe, a sobrecarga de seqüência de caracteres deve chamar o Uri sobrecarregar usando o argumento de seqüência de caracteres.
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 da 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: Passar objetos de System. URI 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: URI retornar valores não devem ser seqüências de caracteres