Compartilhar via


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