ResourceManager Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
resourceSourceparamè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
resourceSourceparamè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.