Share via


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));
      }
   }
}

CA1303: Harfleri yerelleştirilmiş parametreler olarak göndermeyin