ResourceManager Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe ResourceManager.
Sobrecargas
| Nome | Description |
|---|---|
| ResourceManager() |
Inicializa uma nova instância da ResourceManager classe com valores padrão. |
| ResourceManager(Type) |
Inicializa uma nova instância da ResourceManager classe que pesquisa recursos em assemblies satélites com base nas informações do objeto de tipo especificado. |
| ResourceManager(String, Assembly) |
Inicializa uma nova instância da ResourceManager classe que pesquisa recursos contidos em arquivos com o nome raiz especificado no assembly fornecido. |
| ResourceManager(String, Assembly, Type) |
Inicializa uma nova instância da ResourceManager classe que usa uma classe especificada ResourceSet para pesquisar recursos contidos em arquivos com o nome raiz especificado no assembly especificado. |
ResourceManager()
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
Inicializa uma nova instância da ResourceManager classe com valores padrão.
protected:
ResourceManager();
protected ResourceManager();
Protected Sub New ()
Comentários
Esse construtor só será útil se você escrever sua própria classe que deriva da ResourceManager classe.
Aplica-se a
ResourceManager(Type)
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
Inicializa uma nova instância da ResourceManager classe que pesquisa recursos em assemblies satélites com base nas informações do objeto de tipo especificado.
public:
ResourceManager(Type ^ resourceSource);
public ResourceManager(Type resourceSource);
new System.Resources.ResourceManager : Type -> System.Resources.ResourceManager
Public Sub New (resourceSource As Type)
Parâmetros
- resourceSource
- Type
Um tipo do qual o gerenciador de recursos deriva todas as informações para localizar arquivos .resources.
Exceções
O resourceSource parâmetro é null.
Comentários
Aplicativos para desktop
Em aplicativos da área de trabalho, o gerenciador de recursos usa o resourceSource parâmetro para carregar um arquivo de recurso específico da seguinte maneira:
- Se o NeutralResourcesLanguageAttribute atributo não for usado para indicar que os recursos da cultura padrão residem em um assembly satélite, o gerenciador de recursos pressupõe que o arquivo de recurso para a cultura padrão seja encontrado no mesmo assembly que o tipo especificado pelo
resourceSourceparâmetro. - O gerenciador de recursos pressupõe que o arquivo de recurso padrão tenha o mesmo nome base que o tipo especificado pelo
resourceSourceparâmetro. - O gerenciador de recursos usa a classe padrão ResourceSet para manipular o arquivo de recurso.
Por exemplo, dado um tipo chamado MyCompany.MyProduct.MyType, o gerenciador de recursos procura um arquivo .resources chamado MyCompany.MyProduct.MyType.resources no assembly que define MyType.
No Visual Studio, o Designer de Recursos gera automaticamente um código que define uma internal classe (em C#) ou Friend (no Visual Basic) cujo nome é o mesmo que o nome base do arquivo .resources para a cultura padrão. Isso possibilita criar uma instância de um ResourceManager objeto e acoplá-lo a um determinado conjunto de recursos obtendo um objeto de tipo cujo nome corresponde ao nome do recurso, pois enquanto a classe estiver visível para o compilador, os recursos também devem ser. Por exemplo, se um arquivo .resources se chamar Resource1, a instrução a seguir instancia um objeto ResourceManager para gerenciar o arquivo .resources chamado Resource1.
ResourceManager rm = new ResourceManager(typeof(Resource1));
Se você não estiver usando o Visual Studio, poderá criar uma classe sem membros cujo namespace e nome sejam os mesmos do arquivo .resources padrão. O exemplo fornece uma ilustração.
Exemplo
O exemplo a seguir usa o ResourceManager(Type) construtor para instanciar um ResourceManager objeto. Consiste em recursos compilados de arquivos .txt para as culturas em inglês (en), francês (França) (fr-FR) e russo (Rússia) (ru-RU). O exemplo altera a cultura atual e a cultura atual da interface do usuário para inglês (Estados Unidos), francês (França), russo (Rússia) e sueco (Suécia). Em seguida, ele chama o GetString(String) método para recuperar a cadeia de caracteres localizada, que exibe uma saudação que depende da hora do dia.
O exemplo requer três arquivos de recurso baseados em texto, conforme listado na tabela a seguir. Cada arquivo inclui recursos de cadeia de caracteres nomeados Morning, Afternoone Evening.
| Cultura | Nome do arquivo | Nome do recurso | Valor do recurso |
|---|---|---|---|
| en-US | GreetingResources.txt | Morning |
Bom dia |
| en-US | GreetingResources.txt | Afternoon |
Boa tarde |
| en-US | GreetingResources.txt | Evening |
Boa noite |
| 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 |
Добрый вечер |
Você pode usar o arquivo em lote a seguir para compilar o exemplo do Visual Basic e criar um executável chamado Greet.exe. Para compilar com C#, altere o nome do compilador de vbc para csc e a extensão de arquivo de .vb para .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
Este é o código-fonte do exemplo (ShowDate.vb para a versão do Visual Basic ou ShowDate.cs para a versão C# do código).
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!
Além de definir uma classe de aplicativo chamada Example, o código-fonte define uma classe interna cujo nome, GreetingResourcesé o mesmo que o nome base dos arquivos de recurso. Isso possibilita criar com êxito uma instância do objeto ResourceManager ao chamar o construtor ResourceManager(Type).
Observe que a saída exibe a cadeia de caracteres localizada apropriada, exceto quando a cultura atual da interface do usuário é sueca (Suécia), nesse caso, ela usa recursos de idioma inglês. Como os recursos de idioma sueco não estão disponíveis, o aplicativo usa os recursos da cultura padrão, conforme definido pelo NeutralResourcesLanguageAttribute atributo.
Aplica-se a
ResourceManager(String, Assembly)
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
Inicializa uma nova instância da ResourceManager classe que pesquisa recursos contidos em arquivos com o nome raiz especificado no assembly fornecido.
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)
Parâmetros
- baseName
- String
O nome raiz do arquivo de recurso sem sua extensão, mas incluindo qualquer nome de namespace totalmente qualificado. Por exemplo, o nome raiz do arquivo de recurso chamado MyApplication.MyResource.en-US.resources é MyApplication.MyResource.
- assembly
- Assembly
O assembly principal para os recursos.
Exceções
O baseName parâmetro ou assembly o parâmetro é null.
Comentários
Aplicativos para desktop
Em aplicativos da área de trabalho, os arquivos de recurso específicos de cada cultura devem estar contidos em assemblies satélites, e o arquivo de recurso da cultura padrão deve estar contido no assembly principal. Supõe-se que um assembly satélite contenha recursos para uma única cultura especificada no manifesto do assembly e será carregado conforme necessário.
Note
Para recuperar recursos de arquivos .resources diretamente, em vez de recuperá-los de assemblies, você deve chamar o método CreateFileBasedResourceManager para instanciar um objeto ResourceManager.
Se o arquivo de recurso identificado por baseName não puder ser encontrado em assembly, o método criará uma instância de um objeto de ResourceManager, mas a tentativa de recuperar um recurso específico gerará uma exceção, normalmente uma MissingManifestResourceException. Para obter informações sobre o diagnóstico da causa da exceção, consulte a seção "Manipular a exceção MissingManifestResourceException" no tópico da classe ResourceManager.
Exemplo
O exemplo a seguir usa um aplicativo simples não localizado "Olá, Mundo" para ilustrar o construtor ResourceManager(String, Assembly). O conteúdo de um arquivo de texto chamado ExampleResources.txt é Greeting=Hello. Quando o aplicativo é compilado, o recurso é incorporado ao assembly principal do aplicativo.
O arquivo de texto pode ser convertido em um arquivo de recurso binário usando o Gerador de Arquivos de Recurso (ResGen.exe) no prompt de comando da seguinte maneira:
resgen ExampleResources.txt
O exemplo a seguir fornece o código executável que cria uma instância de um ResourceManager objeto, solicita que o usuário insira um nome e exibe uma saudação.
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!
Ele pode ser compilado usando o seguinte comando em C#:
csc Example.cs /resource:ExampleResources.resources
O exemplo recupera uma referência ao assembly que contém o arquivo de recurso passando um tipo definido nesse assembly para a typeof função (em C#) ou a GetType função (no Visual Basic) e recuperando o valor de sua Type.Assembly propriedade.
Notas aos Herdeiros
Esse construtor usa a implementação fornecida pelo ResourceSet sistema. Para usar um formato de arquivo de recurso personalizado, você deve derivar da ResourceSet classe, substituir os GetDefaultReader() métodos e GetDefaultWriter() e passar esse tipo para o ResourceManager(String, Assembly, Type) construtor. Usar um personalizado ResourceSet pode ser útil para controlar a política de cache de recursos ou dar suporte ao seu próprio formato de arquivo de recurso, mas geralmente não é necessário.
Aplica-se a
ResourceManager(String, Assembly, Type)
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
- Origem:
- ResourceManager.cs
Inicializa uma nova instância da ResourceManager classe que usa uma classe especificada ResourceSet para pesquisar recursos contidos em arquivos com o nome raiz especificado no assembly especificado.
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)
Parâmetros
- baseName
- String
O nome raiz do arquivo de recurso sem sua extensão, mas incluindo qualquer nome de namespace totalmente qualificado. Por exemplo, o nome raiz do arquivo de recurso chamado MyApplication.MyResource.en-US.resources é MyApplication.MyResource.
- assembly
- Assembly
O assembly principal para os recursos.
- usingResourceSet
- Type
O tipo do personalizado ResourceSet a ser usado. Se null, o objeto de runtime ResourceSet padrão será usado.
Exceções
usingResourceSet não é uma classe derivada de ResourceSet.
O baseName parâmetro ou assembly o parâmetro é null.
Comentários
Os arquivos de recurso específicos da cultura individual devem estar contidos em assemblies satélite e o arquivo de recurso da cultura padrão deve estar contido no assembly principal. Supõe-se que um assembly satélite contenha recursos para uma única cultura especificada no manifesto do assembly e será carregado conforme necessário.
Note
Para recuperar recursos de arquivos .resources diretamente em vez de recuperá-los de assemblies, você deve chamar o CreateFileBasedResourceManager método para instanciar um ResourceManager objeto.
Se o arquivo de recurso identificado por baseName não puder ser encontrado em assembly, o método criará uma instância de um objeto de ResourceManager, mas a tentativa de recuperar um recurso específico gerará uma exceção, normalmente uma MissingManifestResourceException. Para obter informações sobre o diagnóstico da causa da exceção, consulte a seção "Manipular a exceção MissingManifestResourceException" no tópico da classe ResourceManager.
Note
O usingResourceSet parâmetro é usado para dar suporte ao seu próprio formato de recurso e normalmente será null. Isso é diferente do construtor que usa um Type único.
Notas aos Chamadores
Esse construtor permite que você especifique uma ResourceSet implementação. Se você não quiser uma implementação específica ResourceSet , mas quiser usar um formato de arquivo de recurso personalizado, deverá derivar da ResourceSet classe, substituir os GetDefaultReader() métodos e GetDefaultWriter() passar esse tipo para esse construtor.