String URI sobrecargas telefonar sistema.URI sobrecargas
TypeName |
StringUriOverloadsCallSystemUriOverloads |
CheckId |
CA1057 |
Category (Categoria) |
Microsoft.Design |
Quebrando alterar |
Não separável |
Causa
Um tipo declara método métodos sobrecarregados que diferem somente pela substituição de um parâmetro de cadeia de caracteres com um System.Uri parâmetro e a sobrecarga que aceita o parâmetro de cadeia de caracteres não telefonar a sobrecarga que aceita o Uri parâmetro.
Descrição da regra
Como as sobrecargas de diferem apenas pela seqüência de caracteres / Uri presume-se parâmetro, a seqüência de caracteres que representam um identificador de recurso uniforme (URI). Uma representação de seqüência de caracteres de um URI está sujeita a análise e a codificação de erros e pode levar a vulnerabilidades de segurança.The Uri classe fornece esses serviços de maneira segura e protegida. Para obter os benefícios do 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 da cadeia 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 objeto para a sobrecarga que possui o Uri parâmetro.
Quando suprimir avisos
É seguro eliminar um aviso essa regra se o parâmetro de cadeia 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
Passar objetos sistema.URI em vez de seqüências de caracteres
Propriedades URI não devem ser seqüências de caracteres