ResourceManager Constructores

Definición

Inicializa una nueva instancia de la clase ResourceManager.

Sobrecargas

Nombre Description
ResourceManager()

Inicializa una nueva instancia de la ResourceManager clase con valores predeterminados.

ResourceManager(Type)

Inicializa una nueva instancia de la ResourceManager clase que busca recursos en ensamblados satélite en función de la información del objeto de tipo especificado.

ResourceManager(String, Assembly)

Inicializa una nueva instancia de la ResourceManager clase que busca los recursos contenidos en los archivos con el nombre raíz especificado en el ensamblado especificado.

ResourceManager(String, Assembly, Type)

Inicializa una nueva instancia de la ResourceManager clase que usa una clase especificada ResourceSet para buscar recursos contenidos en archivos con el nombre raíz especificado en el ensamblado especificado.

ResourceManager()

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

Inicializa una nueva instancia de la ResourceManager clase con valores predeterminados.

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

Comentarios

Este constructor solo es útil si escribe su propia clase que deriva de la ResourceManager clase .

Se aplica a

ResourceManager(Type)

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

Inicializa una nueva instancia de la ResourceManager clase que busca recursos en ensamblados satélite en función de la información del 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

Tipo del que el administrador de recursos deriva toda la información para buscar archivos .resources.

Excepciones

El resourceSource parámetro es null.

Comentarios

Aplicaciones de escritorio

En las aplicaciones de escritorio, el administrador de recursos usa el resourceSource parámetro para cargar un archivo de recursos determinado de la siguiente manera:

  • Si el NeutralResourcesLanguageAttribute atributo no se usa para indicar que los recursos de la referencia cultural predeterminada residen en un ensamblado satélite, el administrador de recursos asume que el archivo de recursos de la referencia cultural predeterminada se encuentra en el mismo ensamblado que el tipo especificado por el resourceSource parámetro .
  • El administrador de recursos supone que el archivo de recursos predeterminado tiene el mismo nombre base que el tipo especificado por el resourceSource parámetro .
  • El administrador de recursos usa la clase predeterminada ResourceSet para manipular el archivo de recursos.

Por ejemplo, dado un tipo denominado MyCompany.MyProduct.MyType, el administrador de recursos busca un archivo .resources denominado MyCompany.MyProduct.MyType.resources en el ensamblado que define MyType.

En Visual Studio, el Diseñador de recursos genera automáticamente código que define una internal clase (en C#) o Friend (en Visual Basic) cuyo nombre es el mismo que el nombre base del archivo .resources para la referencia cultural predeterminada. Esto permite crear instancias de un ResourceManager objeto y acoplarlo con un conjunto determinado de recursos obteniendo un objeto de tipo cuyo nombre corresponde al nombre del recurso, ya que siempre que la clase sea visible para el compilador, los recursos también deben ser. Por ejemplo, si un archivo .resources se denomina Resource1, la siguiente instrucción crea una instancia de un ResourceManager objeto para administrar el archivo .resources denominado Resource1:

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

Si no usa Visual Studio, puede crear una clase sin miembros cuyo espacio de nombres y nombre sean los mismos que el del archivo .resources predeterminado. En el ejemplo se proporciona una ilustración.

Example

En el ejemplo siguiente se usa el ResourceManager(Type) constructor para crear instancias de un ResourceManager objeto . Consiste en recursos compilados a partir de archivos .txt para las culturas inglés (en), francés (Francia) (fr-FR) y ruso (Rusia) (ru-RU). En el ejemplo, se cambia la cultura actual y la cultura de interfaz de usuario actual a inglés (Estados Unidos), francés (Francia), ruso (Rusia) y sueco (Suecia). A continuación, llama al GetString(String) método para recuperar la cadena localizada, que muestra un saludo que depende de la hora del día.

El ejemplo requiere tres archivos de recursos basados en texto, como se muestra en la tabla siguiente. Cada archivo incluye recursos de cadena denominados Morning, Afternoony Evening.

Cultura Nombre del archivo Nombre del recurso Valor del recurso
es-ES GreetingResources.txt Morning Buenos días
es-ES GreetingResources.txt Afternoon Buenas tardes
es-ES GreetingResources.txt Evening Buenas noches
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 Добрый вечер

Puede usar el siguiente archivo por lotes para compilar el ejemplo de Visual Basic y crear un archivo ejecutable denominado Greet.exe. Para compilar con C#, cambie el nombre del compilador de vbc a csc y la extensión de archivo de .vb a .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 es el código fuente del ejemplo (ShowDate.vb para la versión de Visual Basic o ShowDate.cs para la versión de C# del 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!

Además de definir una clase de aplicación denominada Example, el código fuente define una clase interna cuyo nombre, GreetingResources, es igual que el nombre base de los archivos de recursos. Esto permite crear exitosamente una instancia de un objeto ResourceManager llamando al constructor ResourceManager(Type).

Observe que la salida muestra la cadena localizada adecuada, excepto cuando la referencia cultural actual de la interfaz de usuario es sueca (Suecia), en cuyo caso usa recursos de idioma inglés. Dado que los recursos de idioma sueco no están disponibles, la aplicación usa los recursos de la referencia cultural predeterminada, tal como se define en el NeutralResourcesLanguageAttribute atributo , en su lugar.

Se aplica a

ResourceManager(String, Assembly)

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

Inicializa una nueva instancia de la ResourceManager clase que busca los recursos contenidos en los archivos con el nombre raíz especificado en el ensamblado especificado.

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

El nombre raíz del archivo de recursos sin su extensión, pero incluye cualquier nombre de espacio de nombres completo. Por ejemplo, el nombre raíz del archivo de recursos denominado MyApplication.MyResource.en-US.resources es MyApplication.MyResource.

assembly
Assembly

Ensamblado principal de los recursos.

Excepciones

El parámetro baseName o assembly es null.

Comentarios

Aplicaciones de escritorio

En las aplicaciones de escritorio, los archivos de recursos específicos de la referencia cultural individual deben estar incluidos en ensamblados satélite y el archivo de recursos de la referencia cultural predeterminada debe estar incluido en el ensamblado principal. Se supone que un ensamblaje satélite contiene recursos para una sola cultura especificada en el manifiesto del ensamblaje y se carga cuando sea necesario.

Note

Para recuperar directamente recursos de los archivos .resources en lugar de recuperarlos de ensamblados, debe llamar al método CreateFileBasedResourceManager para crear una instancia de un objeto ResourceManager.

Si no se encuentra el archivo de recursos identificado por baseName en assembly, el método crea una instancia de un objeto ResourceManager, pero el intento de recuperar un recurso específico produce una excepción, normalmente MissingManifestResourceException. Para obtener información sobre cómo diagnosticar la causa de la excepción, consulte la sección "Control de la excepción MissingManifestResourceException" del tema de la clase ResourceManager.

Example

En el ejemplo siguiente se usa una sencilla aplicación "Hola mundo" no localizada para ilustrar el ResourceManager(String, Assembly) constructor. El contenido de un archivo de texto denominado ExampleResources.txt es Greeting=Hello. Cuando se compila la aplicación, el recurso se inserta en el ensamblado de la aplicación principal.

El archivo de texto se puede convertir en un archivo de recursos binarios utilizando el Generador de archivos de recursos Resource File Generator (ResGen.exe) en la línea de comandos de la siguiente manera:

resgen ExampleResources.txt

En el ejemplo siguiente se proporciona el código ejecutable que crea una instancia de un ResourceManager objeto, se pide al usuario que escriba un nombre y muestre un saludo.

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!

Se puede compilar mediante el comando siguiente en C#:

csc Example.cs /resource:ExampleResources.resources

En el ejemplo se recupera una referencia al ensamblado que contiene el archivo de recursos pasando un tipo definido en ese ensamblado a la typeof función (en C#) o la GetType función (en Visual Basic) y recuperando el valor de su Type.Assembly propiedad.

Notas a los desarrolladores de herederos

Este constructor usa la implementación proporcionada por ResourceSet el sistema. Para usar un formato de archivo de recursos personalizado, debe derivar de la ResourceSet clase , invalidar los GetDefaultReader() métodos y GetDefaultWriter() y pasar ese tipo al ResourceManager(String, Assembly, Type) constructor. El uso de un personalizado ResourceSet puede ser útil para controlar la directiva de almacenamiento en caché de recursos o admitir su propio formato de archivo de recursos, pero generalmente no es necesario.

Se aplica a

ResourceManager(String, Assembly, Type)

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

Inicializa una nueva instancia de la ResourceManager clase que usa una clase especificada ResourceSet para buscar recursos contenidos en archivos con el nombre raíz especificado en el ensamblado 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

El nombre raíz del archivo de recursos sin su extensión, pero incluye cualquier nombre de espacio de nombres completo. Por ejemplo, el nombre raíz del archivo de recursos denominado MyApplication.MyResource.en-US.resources es MyApplication.MyResource.

assembly
Assembly

Ensamblado principal de los recursos.

usingResourceSet
Type

Tipo del personalizado ResourceSet que se va a usar. Si nulles , se usa el objeto en tiempo de ejecución ResourceSet predeterminado.

Excepciones

usingResourceSet no es una clase derivada de ResourceSet.

El parámetro baseName o assembly es null.

Comentarios

Los archivos de recursos específicos de la referencia cultural individual deben estar incluidos en ensamblados satélite y el archivo de recursos de la referencia cultural predeterminada debe estar incluido en el ensamblado principal. Se supone que un ensamblaje satélite contiene recursos para una sola cultura especificada en el manifiesto del ensamblaje y se carga cuando sea necesario.

Note

Para recuperar recursos de archivos .resources directamente en lugar de recuperarlos de ensamblados, debe llamar al CreateFileBasedResourceManager método en su lugar para crear instancias de un ResourceManager objeto.

Si no se encuentra el archivo de recursos identificado por baseName en assembly, el método crea una instancia de un objeto ResourceManager, pero el intento de recuperar un recurso específico produce una excepción, normalmente MissingManifestResourceException. Para obtener información sobre cómo diagnosticar la causa de la excepción, consulte la sección "Control de la excepción MissingManifestResourceException" del tema de la clase ResourceManager.

Note

El usingResourceSet parámetro se usa para admitir su propio formato de recurso y normalmente será null. Esto es diferente del constructor que toma un Type solo.

Notas a los autores de las llamadas

Este constructor le permite especificar una ResourceSet implementación. Si no desea una implementación específica ResourceSet , pero desea usar un formato de archivo de recursos personalizado, debe derivar de la ResourceSet clase , invalidar los GetDefaultReader() métodos y GetDefaultWriter() y pasar ese tipo a este constructor.

Se aplica a