Freigeben über


Zeichenfolgen-URI-Überladungen rufen System-URI-Überladungen auf

     TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Kategorie

Microsoft.Design

Unterbrechende Änderung

NonBreaking

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.

Warnungsausschluss

Eine Warnung dieser Regel kann gefahrlos ausgeschlossen 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)
         Try
            Dim newUri As New Uri(uriString)
            AddToHistory(newUri)
         Catch uriException As UriFormatException
         End Try
      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)
      {
         try
         {
            Uri newUri = new Uri(uriString);
            AddToHistory(newUri);
         }
         catch(UriFormatException uriException) {}
      }

      public void AddToHistory(Uri uriType) { }
   }
}
#using <system.dll>
using namespace System;

namespace DesignLibrary
{
   public ref class History
   {
   public:
      void AddToHistory(String^ uriString)
      {
         try
         {
            Uri^ newUri = gcnew Uri(uriString);
            AddToHistory(newUri);
         }
         catch(UriFormatException^ uriException) {}
      }

      void AddToHistory(Uri^ uriType) { }
   };
}

Verwandte Regeln

System-URI-Objekte anstelle von Zeichenfolgen übergeben

Uri-Eigenschaften sollten keine Zeichenfolgen sein

URI-Parameter sollten keine Zeichenfolgen sein

Uri-Rückgabewerte sollten keine Zeichenfolgen sein