CA1057: Przeciążenia identyfikatora URI, który jest ciągiem, wywołują przeciążenia System.Uri
TypeName |
StringUriOverloadsCallSystemUriOverloads |
CheckId |
CA1057 |
Kategoria |
Microsoft.Design |
Złamanie zmiany |
Bez podziału |
Przyczyna
Typ deklaruje overloads metody, które różnią się jedynie przez zastąpienie parametru ciąg znaków z Uri parametr i przeciążenie, która przyjmuje parametr ciągu nie wywoływać przeciążenia, który ma Uri parametru.
Opis reguły
Ponieważ overloads różnią się tylko ciąg /Uri parametr, ciąg zakłada do reprezentowania jednolitym identyfikatorem zasobów (URI).Reprezentację ciągu identyfikatora URI jest podatna na analizowanie i błędów kodowania i może prowadzić do luk w zabezpieczeniach.Uri Klasy świadczy te usługi w bezpieczny sposób.Do czerpania korzyści z Uri klasy, należy wywoływać przeciążenia ciąg Uri przy użyciu argumentu ciąg na przeciążenie.
Jak naprawić naruszenia
Metodę, która wykorzystuje reprezentację ciągu identyfikatora URI, tak, aby go tworzy instancję CMC Uri klasy przy użyciu argumentu ciąg znaków, a następnie przekazuje Uri obiektu do przeciążenia, który ma Uri parametru.
Kiedy do pomijania ostrzeżenia
Bezpiecznie pominąć ostrzeżenie od tej reguły, jeśli parametr ciągu nie reprezentuje identyfikatora URI.
Przykład
Poniższy przykład pokazuje przeciążenie ciąg prawidłowo wdrożone.
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) { }
};
}
Zasady pokrewne
CA2234: Przekaż obiekty System.Uri zamiast ciągów
CA1056: Właściwości identyfikatora URI nie powinny być ciągami
CA1054: Parametry identyfikatora URI nie powinny być ciągami
CA1055: Wartości zwracane identyfikatora URI nie powinny być ciągami