CA1302: Yerel özel dizeleri doğrudan programın içine gömmeyin
Ürün | Değer |
---|---|
RuleId | CA1302 |
Kategori | Microsoft.Globalization |
Hataya neden olan değişiklik | Hataya neden olmayan |
Neden
Yöntem, belirli sistem klasörlerinin yolunun bir bölümünü temsil eden bir dize değişmez değeri kullanır.
Not
Bu kural kullanım dışı bırakıldı. Daha fazla bilgi için bkz . Kullanım dışı kurallar.
Kural açıklaması
Numaralandırma, System.Environment.SpecialFolder özel sistem klasörlerine başvuran üyeler içerir. Bu klasörlerin konumları farklı işletim sistemlerinde farklı değerlere sahip olabilir, kullanıcı bazı konumları değiştirebilir ve konumlar yerelleştirilir. "C:\WINDOWS\system32" olan Sistem klasörü özel bir klasöre örnektir. yöntemi, System.Environment.GetFolderPath numaralandırmayla Environment.SpecialFolder ilişkili konumları döndürür. tarafından GetFolderPath döndürülen konumlar yerelleştirilir ve çalışmakta olan bilgisayar için uygundur.
Bu kural, yöntemini kullanarak GetFolderPath alınan klasör yollarını ayrı dizin düzeylerinde belirteç haline getirmektedir. Her dize değişmez değeri belirteçlerle karşılaştırılır. Bir eşleşme bulunursa, yönteminin belirteçle ilişkili sistem konumuna başvuran bir dize oluşturduğu varsayılır. Taşınabilirlik ve yerelleştirilebilirlik için dize değişmez değerlerini kullanmak yerine özel sistem klasörlerinin konumlarını almak için yöntemini kullanın GetFolderPath .
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için yöntemini kullanarak GetFolderPath konumu alın.
Uyarıların ne zaman bastırılması gerekiyor?
Sabit listesiyle ilişkili sistem konumlarından birine başvurmak için dize değişmez değeri kullanılmadıysa, bu kuraldan gelen bir uyarıyı Environment.SpecialFolder bastırmak güvenlidir.
Örnek
Aşağıdaki örnek, bu kuraldan üç uyarı oluşturan ortak uygulama veri klasörünün yolunu oluşturur. Ardından, örnek yöntemini kullanarak GetFolderPath yolu alır.
using System;
namespace GlobalizationLibrary
{
class WriteSpecialFolders
{
static void Main()
{
string string0 = "C:";
// Each of the following three strings violates the rule.
string string1 = @"\Documents and Settings";
string string2 = @"\All Users";
string string3 = @"\Application Data";
Console.WriteLine(string0 + string1 + string2 + string3);
// The following statement satisfies the rule.
Console.WriteLine(Environment.GetFolderPath(
Environment.SpecialFolder.CommonApplicationData));
}
}
}
İlgili kurallar
CA1303: Harfleri yerelleştirilmiş parametreler olarak göndermeyin
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin