ResourceManager Constructeurs

Définition

Initialise une nouvelle instance de la classe ResourceManager.

Surcharges

Nom Description
ResourceManager()

Initialise une nouvelle instance de la ResourceManager classe avec des valeurs par défaut.

ResourceManager(Type)

Initialise une nouvelle instance de la ResourceManager classe qui recherche des ressources dans les assemblys satellites en fonction des informations de l’objet de type spécifié.

ResourceManager(String, Assembly)

Initialise une nouvelle instance de la ResourceManager classe qui recherche les ressources contenues dans les fichiers avec le nom racine spécifié dans l’assembly donné.

ResourceManager(String, Assembly, Type)

Initialise une nouvelle instance de la ResourceManager classe qui utilise une classe spécifiée ResourceSet pour rechercher des ressources contenues dans des fichiers portant le nom racine spécifié dans l’assembly donné.

ResourceManager()

Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs

Initialise une nouvelle instance de la ResourceManager classe avec des valeurs par défaut.

protected:
 ResourceManager();
protected ResourceManager();
Protected Sub New ()

Remarques

Ce constructeur est utile uniquement si vous écrivez votre propre classe qui dérive de la ResourceManager classe.

S’applique à

ResourceManager(Type)

Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs

Initialise une nouvelle instance de la ResourceManager classe qui recherche des ressources dans les assemblys satellites en fonction des informations de l’objet de type spécifié.

public:
 ResourceManager(Type ^ resourceSource);
public ResourceManager(Type resourceSource);
new System.Resources.ResourceManager : Type -> System.Resources.ResourceManager
Public Sub New (resourceSource As Type)

Paramètres

resourceSource
Type

Type à partir duquel le gestionnaire de ressources dérive toutes les informations permettant de rechercher des fichiers .resources.

Exceptions

Le resourceSource paramètre est null.

Remarques

Applications de bureau

Dans les applications de bureau, le gestionnaire de ressources utilise le resourceSource paramètre pour charger un fichier de ressources particulier comme suit :

  • Si l’attribut NeutralResourcesLanguageAttribute n’est pas utilisé pour indiquer que les ressources de la culture par défaut résident dans un assembly satellite, le gestionnaire de ressources suppose que le fichier de ressources de la culture par défaut est trouvé dans le même assembly que le type spécifié par le resourceSource paramètre.
  • Le gestionnaire de ressources part du principe que le fichier de ressources par défaut a le même nom de base que le type spécifié par le resourceSource paramètre.
  • Resource Manager utilise la classe par défaut ResourceSet pour manipuler le fichier de ressources.

Par exemple, en fonction d’un type nommé MyCompany.MyProduct.MyType, le gestionnaire de ressources recherche un fichier .resources nommé MyCompany.MyProduct.MyType.resources dans l’assembly qui définit MyType.

Dans Visual Studio, le Concepteur de ressources génère automatiquement du code qui définit une internal classe (en C#) ou Friend (en Visual Basic) dont le nom est identique au nom de base du fichier .resources pour la culture par défaut. Cela permet d’instancier un ResourceManager objet et de le coupler avec un ensemble particulier de ressources en obtenant un objet de type dont le nom correspond au nom de la ressource, car tant que la classe est visible par le compilateur, les ressources doivent également être. Par exemple, si un fichier .resources est nommé Resource1, l’instruction suivante instancie un ResourceManager objet pour gérer le fichier .resources nommé Resource1 :

ResourceManager rm = new ResourceManager(typeof(Resource1));

Si vous n’utilisez pas Visual Studio, vous pouvez créer une classe sans membres dont l’espace de noms et le nom sont identiques à celui du fichier .resources par défaut. L’exemple fournit une illustration.

Exemple

L’exemple suivant utilise le ResourceManager(Type) constructeur pour instancier un ResourceManager objet. Il se compose de ressources compilées à partir de fichiers .txt pour les cultures anglaise (en), française (France) (fr-FR) et russe (Russie) (ru-RU). L’exemple modifie la culture actuelle et la culture actuelle de l’interface utilisateur en anglais (États-Unis), français (France), Russe (Russie) et Suédois (Suède). Il appelle ensuite la GetString(String) méthode pour récupérer la chaîne localisée, qui affiche un message d’accueil qui dépend de l’heure de la journée.

L’exemple nécessite trois fichiers de ressources textuels, comme indiqué dans le tableau suivant. Chaque fichier inclut des ressources de chaîne nommées Morning, Afternoonet Evening.

Culture Nom de fichier Nom de la ressource Valeur de la ressource
en-US GreetingResources.txt Morning Bonjour
en-US GreetingResources.txt Afternoon Bonne après-midi
en-US GreetingResources.txt Evening Bonsoir
fr-FR GreetingResources.fr-FR.txt Morning Bonjour
fr-FR GreetingResources.fr-FR.txt Afternoon Bonjour
fr-FR GreetingResources.fr-FR.txt Evening Bonsoir
ru-RU GreetingResources.ru-RU.txt Morning Доброе утро
ru-RU GreetingResources.ru-RU.txt Afternoon Добрый день
ru-RU GreetingResources.ru-RU.txt Evening Добрый вечер

Vous pouvez utiliser le fichier de commandes suivant pour compiler l’exemple Visual Basic et créer un exécutable nommé Greet.exe. Pour compiler avec C#, remplacez le nom du vbc compilateur par csc et l’extension de fichier par .vb.cs.

resgen GreetingResources.txt
vbc Greet.vb /resource: GreetingResources.resources

md fr-FR
resgen GreetingResources.fr-FR.txt
al /out:fr-FR\Greet.resources.dll /culture:fr-FR /embed: GreetingResources.fr-FR.resources

md ru-RU
resgen GreetingResources.ru-RU.txt
al /out:ru-RU\Greet.resources.dll /culture:ru-RU /embed: GreetingResources.ru-RU.resources

Voici le code source de l’exemple (ShowDate.vb pour la version Visual Basic ou ShowDate.cs pour la version C# du code).

using System;
using System.Resources;
using System.Globalization;
using System.Threading;

[assembly: NeutralResourcesLanguage("en")]

public class Example2
{
    public static void Main()
    {
        string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
        DateTime noon = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
                                     DateTime.Now.Day, 12, 0, 0);
        DateTime evening = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
                                        DateTime.Now.Day, 18, 0, 0);

        ResourceManager rm = new ResourceManager(typeof(GreetingResources));

        foreach (var cultureName in cultureNames)
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureName);
            Console.WriteLine($"The current UI culture is {CultureInfo.CurrentUICulture.Name}");
            if (DateTime.Now < noon)
                Console.WriteLine($"{rm.GetString("Morning")}!");
            else if (DateTime.Now < evening)
                Console.WriteLine($"{rm.GetString("Afternoon")}!");
            else
                Console.WriteLine($"{rm.GetString("Evening")}!");
            Console.WriteLine();
        }
    }

    internal class GreetingResources
    {
    }
}
// The example displays output like the following:
//       The current UI culture is en-US
//       Good afternoon!
//
//       The current UI culture is fr-FR
//       Bonjour!
//
//       The current UI culture is ru-RU
//       Добрый день!
//
//       The current UI culture is sv-SE
//       Good afternoon!
Imports System.Resources
Imports System.Globalization
Imports System.Threading

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   Public Sub Main()
      Dim cultureNames() As String = {"en-US", "fr-FR", "ru-RU", "sv-SE" }
      Dim noon As New Date(Date.Now.Year, Date.Now.Month, 
                           Date.Now.Day, 12,0,0)
      Dim evening As New Date(Date.Now.Year, Date.Now.Month,
                              Date.Now.Day, 18, 0, 0)                          
      
      Dim rm As New ResourceManager(GetType(GreetingResources))
      
      For Each cultureName In cultureNames
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureName)
         Console.WriteLine("The current UI culture is {0}", 
                           CultureInfo.CurrentUICulture.Name)
         If Date.Now < noon Then
            Console.WriteLine("{0}!", rm.GetString("Morning"))
         ElseIf Date.Now < evening Then
            Console.WriteLine("{0}!", rm.GetString("Afternoon"))
         Else
            Console.WriteLine("{0}!", rm.GetString("Evening"))
         End If 
         Console.WriteLine()
      Next
   End Sub
End Module

Friend Class GreetingResources
End Class
' The example displays output like the following:
'       The current UI culture is en-US
'       Good afternoon!
'       
'       The current UI culture is fr-FR
'       Bonjour!
'       
'       The current UI culture is ru-RU
'       Добрый день!
'       
'       The current UI culture is sv-SE
'       Good afternoon!

En plus de définir une classe d’application nommée Example, le code source définit une classe interne dont le nom, GreetingResourcesest identique au nom de base des fichiers de ressources. Cela permet d’instancier un ResourceManager objet avec succès en appelant le ResourceManager(Type) constructeur.

Notez que la sortie affiche la chaîne localisée appropriée, sauf lorsque la culture actuelle de l’interface utilisateur est suédoise (Suède), auquel cas elle utilise des ressources en langue anglaise. Étant donné que les ressources de langue suédoise ne sont pas disponibles, l’application utilise plutôt les ressources de la culture par défaut, comme défini par l’attribut NeutralResourcesLanguageAttribute .

S’applique à

ResourceManager(String, Assembly)

Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs

Initialise une nouvelle instance de la ResourceManager classe qui recherche les ressources contenues dans les fichiers avec le nom racine spécifié dans l’assembly donné.

public:
 ResourceManager(System::String ^ baseName, System::Reflection::Assembly ^ assembly);
public ResourceManager(string baseName, System.Reflection.Assembly assembly);
new System.Resources.ResourceManager : string * System.Reflection.Assembly -> System.Resources.ResourceManager
Public Sub New (baseName As String, assembly As Assembly)

Paramètres

baseName
String

Nom racine du fichier de ressources sans son extension, mais y compris tout nom d’espace de noms complet. Par exemple, le nom racine du fichier de ressources nommé MyApplication.MyResource.en-US.resources est MyApplication.MyResource.

assembly
Assembly

Assembly principal pour les ressources.

Exceptions

Le ou baseName le assembly paramètre est null.

Remarques

Applications de bureau

Dans les applications de bureau, les fichiers de ressources spécifiques à la culture doivent être contenus dans les assemblys satellites, et le fichier de ressources de la culture par défaut doit être contenu dans l’assembly principal. Un assembly satellite est supposé contenir des ressources pour une seule culture spécifiée dans le manifeste de cet assembly et est chargé si nécessaire.

Note

Pour récupérer des ressources à partir de fichiers .resources directement au lieu de les récupérer à partir d’assemblages, vous devez appeler la méthode CreateFileBasedResourceManager à la place afin d’instancier un objet ResourceManager.

Si le fichier de ressources identifié par baseName est introuvable, assemblyla méthode instancie un ResourceManager objet, mais la tentative de récupération d’une ressource spécifique lève généralement une exception MissingManifestResourceException. Pour obtenir des informations sur le diagnostic de la cause de l'exception, consultez la section « Gestion de l'exception MissingManifestResourceException » dans la rubrique de la classe ResourceManager.

Exemple

L’exemple suivant utilise une application « Hello World » simple non localisée pour illustrer le ResourceManager(String, Assembly) constructeur. Le contenu d’un fichier texte nommé ExampleResources.txt est Greeting=Hello. Lorsque l’application est compilée, la ressource est incorporée dans l’assembly d’application principal.

Le fichier texte peut être converti en fichier de ressources binaire à l’aide du générateur de fichiers de ressources (ResGen.exe) à l’invite de commandes comme suit :

resgen ExampleResources.txt

L’exemple suivant fournit le code exécutable qui instancie un ResourceManager objet, invite l’utilisateur à entrer un nom et affiche un message d’accueil.

using System;
using System.Reflection;
using System.Resources;

public class Example1
{
    public static void Main()
    {
        // Retrieve the resource.
        ResourceManager rm = new ResourceManager("ExampleResources",
                                 typeof(Example).Assembly);
        string greeting = rm.GetString("Greeting");

        Console.Write("Enter your name: ");
        string name = Console.ReadLine();
        Console.WriteLine($"{greeting} {name}!");
    }
}
// The example produces output similar to the following:
//       Enter your name: John
//       Hello John!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources

Module Example1
    Public Sub Main()
        ' Retrieve the resource.
        Dim rm As New ResourceManager("ExampleResources",
                                      GetType(Example).Assembly)
        Dim greeting As String = rm.GetString("Greeting")

        Console.Write("Enter your name: ")
        Dim name As String = Console.ReadLine()
        Console.WriteLine("{0} {1}!", greeting, name)
    End Sub
End Module
' The example produces output similar to the following:
'       Enter your name: John
'       Hello John!

Elle peut être compilée à l’aide de la commande suivante en C# :

csc Example.cs /resource:ExampleResources.resources

L’exemple récupère une référence à l’assembly qui contient le fichier de ressources en passant un type défini dans cet assembly à la typeof fonction (en C#) ou à la GetType fonction (en Visual Basic) et en récupérant la valeur de sa Type.Assembly propriété.

Notes pour les héritiers

Ce constructeur utilise l’implémentation fournie par ResourceSet le système. Pour utiliser un format de fichier de ressources personnalisé, vous devez dériver de la ResourceSet classe, remplacer les GetDefaultReader() méthodes et GetDefaultWriter() passer ce type au ResourceManager(String, Assembly, Type) constructeur. L’utilisation d’un fichier personnalisé ResourceSet peut être utile pour contrôler la stratégie de mise en cache des ressources ou prendre en charge votre propre format de fichier de ressources, mais n’est généralement pas nécessaire.

S’applique à

ResourceManager(String, Assembly, Type)

Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs
Source:
ResourceManager.cs

Initialise une nouvelle instance de la ResourceManager classe qui utilise une classe spécifiée ResourceSet pour rechercher des ressources contenues dans des fichiers portant le nom racine spécifié dans l’assembly donné.

public:
 ResourceManager(System::String ^ baseName, System::Reflection::Assembly ^ assembly, Type ^ usingResourceSet);
public ResourceManager(string baseName, System.Reflection.Assembly assembly, Type? usingResourceSet);
public ResourceManager(string baseName, System.Reflection.Assembly assembly, Type usingResourceSet);
new System.Resources.ResourceManager : string * System.Reflection.Assembly * Type -> System.Resources.ResourceManager
Public Sub New (baseName As String, assembly As Assembly, usingResourceSet As Type)

Paramètres

baseName
String

Nom racine du fichier de ressources sans son extension, mais y compris tout nom d’espace de noms complet. Par exemple, le nom racine du fichier de ressources nommé MyApplication.MyResource.en-US.resources est MyApplication.MyResource.

assembly
Assembly

Assembly principal pour les ressources.

usingResourceSet
Type

Type du personnalisé ResourceSet à utiliser. Si null, l’objet runtime ResourceSet par défaut est utilisé.

Exceptions

usingResourceSet n’est pas une classe dérivée de ResourceSet.

Le ou baseName le assembly paramètre est null.

Remarques

Les fichiers de ressources spécifiques à la culture doivent être contenus dans les assemblys satellites, et le fichier de ressources de la culture par défaut doit être contenu dans l’assembly principal. Un assembly satellite est supposé contenir des ressources pour une seule culture spécifiée dans le manifeste de cet assembly et est chargé si nécessaire.

Note

Pour récupérer des ressources à partir de fichiers .resources directement au lieu de les récupérer à partir d’assemblys, vous devez appeler la méthode à la CreateFileBasedResourceManager place pour instancier un ResourceManager objet.

Si le fichier de ressources identifié par baseName est introuvable, assemblyla méthode instancie un ResourceManager objet, mais la tentative de récupération d’une ressource spécifique lève généralement une exception MissingManifestResourceException. Pour obtenir des informations sur le diagnostic de la cause de l'exception, consultez la section « Gestion de l'exception MissingManifestResourceException » dans la rubrique de la classe ResourceManager.

Note

Le usingResourceSet paramètre est utilisé pour prendre en charge votre propre format de ressource et sera généralement null. Ceci est différent du constructeur qui prend un Type seul.

Notes pour les appelants

Ce constructeur vous permet de spécifier une ResourceSet implémentation. Si vous ne souhaitez pas une implémentation spécifique ResourceSet , mais souhaitez utiliser un format de fichier de ressources personnalisé, vous devez dériver de la ResourceSet classe, remplacer les GetDefaultReader() méthodes et GetDefaultWriter() passer ce type à ce constructeur.

S’applique à