CA1057: URI-Überladungen vom Typ string rufen Überladungen vom Typ System.Uri auf

TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Kategorie (Category)

Microsoft.Design

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Typ deklariert Methodenüberladungen, die sich nur dadurch unterscheiden, dass ein Zeichenfolgenparameter durch einen Uri-Parameter ersetzt wird, und die Überladung, die den Zeichenfolgenparameter annimmt, ruft nicht die Überladung auf, die den Uri-Parameter annimmt.

Regelbeschreibung

Da die Überladungen sich nur durch den Zeichenfolge/Uri-Parameter unterscheiden, wird für die Zeichenfolge angenommen, dass sie einen Uniform Resource Identifier (URI) darstellt.Eine Zeichenfolgendarstellung eines URIs ist anfällig für Analyse- und Codierungsfehler und kann zu Sicherheitsmängeln führen.Von der Uri-Klasse werden diese Dienste auf sichere Weise bereitgestellt.Um die Vorteile der Uri-Klasse ausschöpfen zu können, sollte die Zeichenfolgenüberladung die Uri-Überladung mittels Zeichenfolgenargument aufrufen.

Behandeln von Verstößen

Implementieren Sie die Methode, die die Zeichenfolgendarstellung des URIs verwendet, erneut, sodass eine Instanz der Uri-Klasse unter Verwendung des Zeichenfolgenarguments erstellt und anschließend das Uri-Objekt an die Überladung übergeben wird, die über den Uri-Parameter verfügt.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung dieser Regel kann gefahrlos unterdrückt werden, wenn der Zeichenfolgenparameter keinen URI darstellt.

Beispiel

Das folgende Codebeispiel veranschaulicht eine korrekt implementierte Zeichenfolgenüberladung.

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

Verwandte Regeln

CA2234: Übergeben Sie System.Uri-Objekte anstelle von Zeichenfolgen

CA1056: URI-Eigenschaften dürfen keine Zeichenfolgen sein

CA1054: URI-Parameter dürfen keine Zeichenfolgen sein

CA1055: URI-Rückgabewerte dürfen keine Zeichenfolgen sein.