CA1057: Dize URI aşırı yüklemeleri System.Uri aşırı yüklemelerini çağırır
TypeName |
StringUriOverloadsCallSystemUriOverloads |
CheckId |
CA1057 |
Kategori |
Microsoft.Design |
Değişiklik kesiliyor |
Bölünemez |
Neden
Yalnızca bir dize parametresi ile değiştirilmesi tarafından farklı yöntemi aşırı bir tür bildirir bir Uri parametresi ve dize parametresi alır aşırı götüren aşırı çağırmıyor Uri parametresi.
Kural Tanımı
Aşırı dizesi yalnızca farklı olduğundan /Uri parametresi, dize bir Tekdüzen Kaynak Tanımlayıcısı (URI) temsil edilir.Dize halinde temsilini URI ayrıştırma ve hataları kodlama açıktır ve güvenlik açıklarına yol açabilecek.Uri Sınıfı, güvenli bir şekilde bu hizmetleri sağlar.Yararları saklaması için Uri dize aşırı sınıfı, çağrı Uri dize değişkeni kullanarak tekrar.
İhlalleri düzeltmek nasıl
Örneği oluşturur böylece URI dize gösterimini kullanan yöntem re-implement Uri dize değişkeni kullanarak sınıf ve ardından geçen Uri olan aşırı nesnesine Uri parametresi.
Uyarıları ne zaman
Dize parametresi bir URI'yı temsil etmiyor, bir uyarı bu kuraldan bastırmak güvenlidir.
Örnek
Aşağıdaki örnek, doğru uygulanmış dize aşırı gösterir.
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) { }
};
}
İlgili kuralları
CA2234: Dizeler yerine System.Uri nesneleri gönderin
CA1056: URI özellikleri dizeler olmamalıdır