Freigeben über


CA1302: Keine Hartkodierung für gebietsschemaspezifische Zeichenfolgen verwenden

TypeName

DoNotHardcodeLocaleSpecificStrings

CheckId

CA1302

Kategorie

Microsoft.Globalization

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Eine Methode verwendet ein Zeichenfolgenliteral, das einen Teil des Pfads bestimmter Systemordner darstellt.

Regelbeschreibung

Die System.Environment.SpecialFolder-Enumeration enthält Member, die auf besondere Systemordner verweisen. Die Speicherorte dieser Ordner können sich von Betriebssystem zu Betriebssystem unterscheiden. Der Benutzer kann einige Speicherorte ändern, und die Speicherorte sind lokalisiert. Ein Beispiel für einen besonderen Ordner ist der Systemordner, der "C:\WINDOWS\system32" unter Windows XP, aber "C:\WINNT\system32" unter Windows 2000 ist. Die Environment.GetFolderPath-Methode gibt die der Environment.SpecialFolder-Enumeration zugeordneten Speicherorte zurück. Die von GetFolderPath zurückgegebenen Speicherorte sind lokalisiert und dem aktuell aktiven Computer angepasst.

Diese Regel löst die Ordnerpfade, die mit der GetFolderPath-Methode abgerufen werden, mithilfe von Token in separate Verzeichnisebenen auf. Jedes Zeichenfolgenliteral wird mit den Token verglichen. Wenn eine Entsprechung gefunden wird, wird davon ausgegangen, dass die Methode eine Zeichenfolge erzeugt, die auf den mit dem Token verknüpften Systemspeicherort verweist. Verwenden Sie zwecks Portabilität und Lokalisierbarkeit die GetFolderPath-Methode, um die Speicherorte der speziellen Systemordner abzurufen, anstatt die Zeichenfolgenliterale zu verwenden.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, rufen Sie den Speicherort mit der GetFolderPath-Methode ab.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung dieser Regel kann gefahrlos unterdrückt werden, wenn für den Verweis auf einen der Systemspeicherorte, die mit der Environment.SpecialFolder-Enumeration verknüpft sind, nicht das Zeichenfolgenliteral verwendet wird.

Beispiel

Im folgenden Beispiel wird der Pfad zum gemeinsamen Anwendungsdatenordner erstellt, wobei diese Regel drei Warnungen generiert. Danach wird im Beispiel der Pfad mit der GetFolderPath-Methode abgerufen.

Imports System

Namespace GlobalizationLibrary

   Class WriteSpecialFolders

      Shared Sub Main()

         Dim string0 As String = "C:"

         ' Each of the following three strings violates the rule.
         Dim string1 As String = "\Documents and Settings"
         Dim string2 As String = "\All Users"
         Dim string3 As String = "\Application Data"
         Console.WriteLine(string0 & string1 & string2 & string3)

         ' The following statement satisfies the rule.
         Console.WriteLine(Environment.GetFolderPath( _ 
            Environment.SpecialFolder.CommonApplicationData))

      End Sub

   End Class

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

Verwandte Regeln

CA1303: Literale nicht als lokalisierte Parameter übergeben