Sdílet prostřednictvím


CA1057: Řetězec identifikátoru URI přetížení volat přetížení System.Uri

Název_typu

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Kategorie

Microsoft.design

Změnit rozdělení

Bez rozdělení

Příčina

Typ deklaruje přetížení metody, které se liší pouze náhradní řetězec parametru s System.Uri parametr a přetížení, která přebírá parametr řetězec nevyvolá přetížení, že trvá Uri parametr.

Popis pravidla

Protože přetížení liší pouze řetězec /Uri parametr řetězec považován představují uniform resource identifier (URI).Řetězcové vyjádření identifikátoru URI je náchylné k analýze a kódování chyby a může vést k ohrožení zabezpečení.Uri Třída poskytuje tyto služby v bezpečném způsobem.K pěšky Uri přetížení řetězec třídy, by měl zavolat Uri přetěžování pomocí argumentu řetězec.

Jak opravit porušení

RE-Implement metoda, která používá reprezentace řetězec identifikátoru URI, takže vytvoří instanci Uri třídy pomocí argument řetězce a předá Uri objektu k přetížení, který má Uri parametr.

Při potlačení upozornění

Je bezpečné potlačit varování od tohoto pravidla, pokud parametr řetězec nereprezentuje identifikátoru URI.

Příklad

Následující příklad zobrazuje správně implementované řetězec přetížení.

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) { }
   };
}

Souvisejících pravidel

CA2234: Objekty průchod System.Uri namísto řetězce

CA1056: URI vlastnosti by neměl být řetězce

CA1054: Parametry URI by neměl být řetězce

CA1055: URI vrátit hodnoty by neměl být řetězce