CA1057: Gli overload URI dei valori di stringa chiamano gli overload System.Uri

Articolo Valore
ID regola CA1057
Category Microsoft.Design
Modifica Nessuna interruzione

Causa

Un tipo dichiara overload del metodo che differiscono solo per la sostituzione di un parametro stringa con un System.Uri parametro e l'overload che accetta il parametro stringa non chiama l'overload che accetta il Uri parametro .

Descrizione regola

Poiché gli overload differiscono solo per la stringa o Uri il parametro , si presuppone che la stringa rappresenti un URI (Uniform Resource Identifier). Una rappresentazione in forma di stringa di un URI è soggetta a errori di analisi e codifica e può creare vulnerabilità nella sicurezza. La Uri classe fornisce questi servizi in modo sicuro e sicuro. Per sfruttare i vantaggi della Uri classe, l'overload della stringa deve chiamare l'overload usando l'argomento Uri stringa.

Come correggere le violazioni

Riesemplementare il metodo che usa la rappresentazione di stringa dell'URI in modo che crei un'istanza della Uri classe usando l'argomento stringa e quindi passa l'oggetto Uri all'overload con il Uri parametro .

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola se il parametro stringa non rappresenta un URI.

Esempio

Nell'esempio seguente viene illustrato un overload di stringa implementato correttamente.

using System;

namespace DesignLibrary
{
   public class History
   {
      public void AddToHistory(string uriString)
      {
          Uri newUri = new Uri(uriString);
          AddToHistory(newUri);
      }

      public void AddToHistory(Uri uriType) { }
   }
}

CA2234: Passare oggetti System.Uri invece di stringhe

CA1056: Le proprietà URI non devono essere stringhe

CA1054: I parametri URI non devono essere stringhe

CA1055: I valori restituiti URI non devono essere stringhe