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