ResourceManager Construtores

Definição

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 resourceSource parâmetro.
  • O gerenciador de recursos pressupõe que o arquivo de recurso padrão tenha o mesmo nome base que o tipo especificado pelo resourceSource parâ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.

Aplica-se a