Share via


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

Aktualisiert: November 2007

     TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Kategorie

Microsoft.Design

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Typ deklariert Methodenüberladungen, die sich nur dadurch unterscheiden, dass ein Zeichenfolgenparameter durch einen System.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.

Behandlung 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

Übergeben Sie System.Uri-Objekte anstelle von Zeichenfolgen

URI-Eigenschaften dürfen keine Zeichenfolgen sein

URI-Parameter dürfen keine Zeichenfolgen sein

URI-Rückgabewerte dürfen keine Zeichenfolgen sein