CA1057: URI-Überladungen vom Typ string rufen Überladungen vom Typ System.Uri auf
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.
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