ResourceManager.GetObject Método

Definición

Devuelve el valor del recurso distinto de una cadena especificado para la referencia cultural actual.Returns the value of the specified non-string resource for the current culture.

Sobrecargas

GetObject(String)

Devuelve el valor del recurso que no sea de cadena especificado.Returns the value of the specified non-string resource.

GetObject(String, CultureInfo)

Obtiene el valor del recurso especificado de cadena no adaptado a la referencia cultural especificada.Gets the value of the specified non-string resource localized for the specified culture.

GetObject(String)

Devuelve el valor del recurso que no sea de cadena especificado.Returns the value of the specified non-string resource.

public:
 virtual System::Object ^ GetObject(System::String ^ name);
public virtual object GetObject (string name);
abstract member GetObject : string -> obj
override this.GetObject : string -> obj
Public Overridable Function GetObject (name As String) As Object

Parámetros

name
String

Nombre del recurso que se va a obtener.The name of the resource to get.

Devoluciones

Valor del recurso adaptado a la configuración de la referencia cultural actual del llamador.The value of the resource localized for the caller's current culture settings. Si existe un conjunto adecuado de recursos pero name no se encuentra, el método devuelve null.If an appropriate resource set exists but name cannot be found, the method returns null.

Excepciones

El parámetro name es null.The name parameter is null.

No se han encontrado conjuntos de recursos localizados que se puedan usar y no hay recursos para la referencia cultural predeterminada.No usable set of localized resources has been found, and there are no default culture resources. Para obtener información sobre cómo administrar esta excepción, vea la sección "Administrar las excepciones MissingManifestResourceException y MissingSatelliteAssemblyException" en el tema de la clase ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Los recursos de la referencia cultural predeterminada residen en un ensamblado satélite que no se encuentra.The default culture's resources reside in a satellite assembly that could not be found. Para obtener información sobre cómo administrar esta excepción, vea la sección "Administrar las excepciones MissingManifestResourceException y MissingSatelliteAssemblyException" en el tema de la clase ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Ejemplos

En el siguiente ejemplo se usa el método GetObject(String) para deserializar un objeto personalizado.The following example uses the GetObject(String) method to deserialize a custom object. En el ejemplo se incluye un archivo de código fuente denominado UIElements.cs (UIElements. VB si usa Visual Basic) que define la siguiente estructura denominada PersonTable.The example includes a source code file named UIElements.cs (UIElements.vb if you're using Visual Basic) that defines the following structure named PersonTable. Esta estructura está pensada para usarse con una rutina de visualización general de tabla en la que se muestren los nombres localizados de las columnas de la tabla.This structure is intended to be used by a general table display routine that displays the localized names of table columns. Tenga en cuenta que la estructura PersonTable está marcada con el atributo SerializableAttribute .Note that the PersonTable structure is marked with the SerializableAttribute attribute.

using System;

[Serializable] public struct PersonTable
{
   public readonly int nColumns;
   public readonly string column1; 
   public readonly string column2;
   public readonly string column3; 
   public readonly int width1;
   public readonly int width2;
   public readonly int width3;
   
   public PersonTable(string column1, string column2, string column3,
                  int width1, int width2, int width3)
   {
      this.column1 = column1;
      this.column2 = column2;
      this.column3 = column3;
      this.width1 = width1;
      this.width2 = width2;
      this.width3 = width3;
      this.nColumns = typeof(PersonTable).GetFields().Length / 2; 
   }
}
<Serializable> Public Structure PersonTable
   Public ReadOnly nColumns As Integer
   Public Readonly column1 As String
   Public ReadOnly column2 As String
   Public ReadOnly column3 As String
   Public ReadOnly width1 As Integer
   Public ReadOnly width2 As Integer
   Public ReadOnly width3 As Integer
   
   Public Sub New(column1 As String, column2 As String, column3 As String,
                  width1 As Integer, width2 As Integer, width3 As Integer)
      Me.column1 = column1
      Me.column2 = column2
      Me.column3 = column3
      Me.width1 = width1
      Me.width2 = width2
      Me.width3 = width3
      Me.nColumns = Me.GetType().GetFields().Count \ 2 
   End Sub
End Structure

El siguiente código del archivo CreateResources.cs (CreateResources.vb para Visual Basic) crea un archivo de recursos XML denominado UIResources.resx que almacena un título de tabla y un objeto PersonTable que contiene información de una aplicación localizada para el idioma inglés.The following code from a file named CreateResources.cs (CreateResources.vb for Visual Basic) creates an XML resource file named UIResources.resx that stores a table title and a PersonTable object that contains information for an app that is localized for the English language.

using System;
using System.Resources;

public class CreateResource
{
   public static void Main()
   {
      PersonTable table = new PersonTable("Name", "Employee Number", 
                                          "Age", 30, 18, 5);
      ResXResourceWriter rr = new ResXResourceWriter(@".\UIResources.resx");
      rr.AddResource("TableName", "Employees of Acme Corporation");
      rr.AddResource("Employees", table);
      rr.Generate();
      rr.Close();
   }
}
Imports System.Resources

Module CreateResource
   Public Sub Main()
      Dim table As New PersonTable("Name", "Employee Number", "Age", 30, 18, 5)
      Dim rr As New ResXResourceWriter(".\UIResources.resx")
      rr.AddResource("TableName", "Employees of Acme Corporation")
      rr.AddResource("Employees", table)
      rr.Generate()
      rr.Close()
   End Sub
End Module

Después, el siguiente código del archivo de código fuente GetObject.cs (GetObject.vb) recupera los recursos y los muestra en la consola.The following code in a source code file named GetObject.cs (GetObject.vb) then retrieves the resources and displays them to the console.

using System;
using System.Resources;

[assembly: NeutralResourcesLanguageAttribute("en")]

public class Example
{
   public static void Main()
   {
      string fmtString = String.Empty;
      ResourceManager rm = new ResourceManager("UIResources", typeof(Example).Assembly);       
      string title = rm.GetString("TableName");
      PersonTable tableInfo = (PersonTable) rm.GetObject("Employees");

      if (! String.IsNullOrEmpty(title)) {
         fmtString = "{0," + ((Console.WindowWidth + title.Length) / 2).ToString() + "}"; 
         Console.WriteLine(fmtString, title);      
         Console.WriteLine();
      }

      for (int ctr = 1; ctr <= tableInfo.nColumns; ctr++) {
         string columnName = "column"  + ctr.ToString();
         string widthName = "width" + ctr.ToString();
         string value = tableInfo.GetType().GetField(columnName).GetValue(tableInfo).ToString();
         int width = (int) tableInfo.GetType().GetField(widthName).GetValue(tableInfo);
         fmtString = "{0,-" + width.ToString() + "}";
         Console.Write(fmtString, value);
      }      
      Console.WriteLine();
   }
}
Imports System.Resources

<Assembly: NeutralResourcesLanguageAttribute("en")>

Module Example
   Public Sub Main()
      Dim fmtString As String = String.Empty
      Dim rm As New ResourceManager("UIResources", GetType(Example).Assembly)       
      Dim title As String = rm.GetString("TableName")
      Dim tableInfo As PersonTable = DirectCast(rm.GetObject("Employees"), PersonTable)

      If Not String.IsNullOrEmpty(title) Then
         fmtString = "{0," + ((Console.WindowWidth + title.Length) \ 2).ToString() + "}" 
         Console.WriteLine(fmtString, title)      
         Console.WriteLine()
      End If

      For ctr As Integer = 1 To tableInfo.nColumns
         Dim columnName As String = "column"  + ctr.ToString()
         Dim widthName As String = "width" + ctr.ToString()
         Dim value As String = CStr(tableInfo.GetType().GetField(columnName).GetValue(tableInfo))
         Dim width As Integer = CInt(tableInfo.GetType().GetField(widthName).GetValue(tableInfo))
         fmtString = "{0,-" + width.ToString() + "}"
         Console.Write(fmtString, value)
      Next      
      Console.WriteLine()
   End Sub
End Module

Puede crear el archivo de recursos y los ensamblados necesarios y ejecutar la aplicación con el siguiente archivo por lotes.You can build the necessary resource file and assemblies and run the app by executing the following batch file. Debe usar la opción /r para proporcionar a Resgen.exe una referencia a UIElements.dll para que pueda tener acceso a la información de la estructura PersonTable .You must use the /r option to supply Resgen.exe with a reference to UIElements.dll so that it can access information about the PersonTable structure. Si usa C#, reemplace el nombre del compilador vbc por cscy la extensión .vb por .cs.If you're using C#, replace the vbc compiler name with csc, and replace the .vb extension with .cs.

  
vbc /t:library UIElements.vb  
vbc CreateResources.vb /r:UIElements.dll  
CreateResources  
  
resgen UIResources.resx  /r:UIElements.dll  
vbc GetObject.vb /r:UIElements.dll /resource:UIResources.resources  
  
GetObject.exe  
  

Comentarios

El método GetObject se utiliza para recuperar recursos que no son de cadena.The GetObject method is used to retrieve non-string resources. Estos incluyen valores que pertenecen a tipos de datos primitivos como Int32 o Double, mapas de bits (por ejemplo, un objeto System.Drawing.Bitmap) o objetos serializados personalizados.These include values that belong to primitive data types such as Int32 or Double, bitmaps (such as a System.Drawing.Bitmap object), or custom serialized objects. Normalmente, el objeto devuelto debe convertirse (en C#) o convertirse (en Visual Basic) en un objeto del tipo adecuado.Typically, the returned object must be cast (in C#) or converted (in Visual Basic) to an object of the appropriate type.

El recurso devuelto se localiza para la referencia cultural de la interfaz de usuario del subproceso actual, que se define mediante la propiedad CultureInfo.CurrentUICulture.The returned resource is localized for the UI culture of the current thread, which is defined by the CultureInfo.CurrentUICulture property. Si el recurso no está localizado para esa referencia cultural, el administrador de recursos usa reglas de reserva para cargar un recurso adecuado.If the resource is not localized for that culture, the resource manager uses fallback rules to load an appropriate resource. Si no se encuentra ningún conjunto utilizable de recursos localizados, el ResourceManager recurre a los recursos de la referencia cultural predeterminada.If no usable set of localized resources is found, the ResourceManager falls back on the default culture's resources. Si no se encuentra un conjunto de recursos para la referencia cultural predeterminada, el método produce una excepción MissingManifestResourceException o, si se espera que el conjunto de recursos resida en un ensamblado satélite, una excepción MissingSatelliteAssemblyException.If a resource set for the default culture is not found, the method throws a MissingManifestResourceException exception or, if the resource set is expected to reside in a satellite assembly, a MissingSatelliteAssemblyException exception. Si el administrador de recursos puede cargar un conjunto de recursos adecuado pero no encuentra un recurso denominado name, el método devuelve null.If the resource manager can load an appropriate resource set but cannot find a resource named name, the method returns null.

La propiedad IgnoreCase determina si la comparación de name con los nombres de los recursos distingue entre mayúsculas y minúsculas o distingue entre mayúsculas y minúsculas (valor predeterminado).The IgnoreCase property determines whether the comparison of name with the names of resources is case-insensitive or case-sensitive (the default).

Precaución

Este método puede producir más excepciones de las que se muestran.This method can throw more exceptions than are listed. Una razón por la que puede ocurrir esto es si un método al que llama este método produce una excepción.One reason this might occur is if a method that this method calls throws an exception. Por ejemplo, podría producirse una excepción de FileLoadException si se produjera un error en la implementación o la instalación de un ensamblado satélite, SerializationException o si un tipo definido por el usuario produce una excepción definida por el usuario cuando se deserializa el tipo.For example, a FileLoadException exception might be thrown if an error was made deploying or installing a satellite assembly, or a SerializationException exception might be thrown if a user-defined type throws a user-defined exception when the type is deserialized.

Consideraciones sobre el rendimientoPerformance Considerations

Si llama varias veces al método GetObject con el mismo parámetro name, no dependa del método devolviendo una referencia al mismo objeto con cada llamada.If you call the GetObject method multiple times with the same name parameter, do not depend on the method returning a reference to the same object with each call. Esto se debe a que el método GetObject puede devolver una referencia a un objeto de recurso existente en una memoria caché, o puede volver a cargar el recurso y devolver una referencia a un nuevo objeto de recurso.This is because the GetObject method can return a reference to an existing resource object in a cache, or it can reload the resource and return a reference to a new resource object.

Seguridad

ReflectionPermission
Cuando se invoca enlazado en tiempo de ejecución mediante mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccess.Associated enumeration: MemberAccess.

Consulte también:

GetObject(String, CultureInfo)

Obtiene el valor del recurso especificado de cadena no adaptado a la referencia cultural especificada.Gets the value of the specified non-string resource localized for the specified culture.

public:
 virtual System::Object ^ GetObject(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public virtual object GetObject (string name, System.Globalization.CultureInfo culture);
abstract member GetObject : string * System.Globalization.CultureInfo -> obj
override this.GetObject : string * System.Globalization.CultureInfo -> obj
Public Overridable Function GetObject (name As String, culture As CultureInfo) As Object

Parámetros

name
String

Nombre del recurso que se va a obtener.The name of the resource to get.

culture
CultureInfo

Referencia cultural a la que se va a adaptar el recurso.The culture for which the resource is localized. Si el recurso no se adapta para esta referencia cultural, el administrador de recursos usa reglas de reserva para buscar un recurso adecuado.If the resource is not localized for this culture, the resource manager uses fallback rules to locate an appropriate resource.

Si este valor es null, el objeto CultureInfo se obtiene mediante la propiedad CurrentUICulture.If this value is null, the CultureInfo object is obtained by using the CurrentUICulture property.

Devoluciones

Valor del recurso, adaptado a la referencia cultural especificada.The value of the resource, localized for the specified culture. Si existe un conjunto adecuado de recursos pero name no se encuentra, el método devuelve null.If an appropriate resource set exists but name cannot be found, the method returns null.

Excepciones

El parámetro name es null.The name parameter is null.

No se han encontrado conjuntos de recursos que se puedan utilizar y no hay recursos de la referencia cultural predeterminada.No usable set of resources have been found, and there are no default culture resources. Para obtener información sobre cómo administrar esta excepción, vea la sección "Administrar las excepciones MissingManifestResourceException y MissingSatelliteAssemblyException" en el tema de la clase ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Los recursos de la referencia cultural predeterminada residen en un ensamblado satélite que no se encuentra.The default culture's resources reside in a satellite assembly that could not be found. Para obtener información sobre cómo administrar esta excepción, vea la sección "Administrar las excepciones MissingManifestResourceException y MissingSatelliteAssemblyException" en el tema de la clase ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Ejemplos

En el siguiente ejemplo se usa el método GetObject(String, CultureInfo) para deserializar un objeto personalizado.The following example uses the GetObject(String, CultureInfo) method to deserialize a custom object. En el ejemplo se incluye un archivo de código fuente denominado NumberInfo.cs (NumberInfo. VB si usa Visual Basic) que define la siguiente estructura denominada Numbers.The example includes a source code file named NumberInfo.cs (NumberInfo.vb if you're using Visual Basic) that defines the following structure named Numbers. Esta estructura está pensada para que la use una aplicación educativa sencilla que enseña a los estudiantes que no están en inglés a contar con diez en inglés.This structure is intended to be used by a simple educational app that teaches non-English speaking students to count to ten in English. Tenga en cuenta que la clase Numbers se marca con el atributo SerializableAttribute.Note that the Numbers class is marked with the SerializableAttribute attribute.

using System;

[Serializable] public class Numbers
{
   public readonly string One;
   public readonly string Two;
   public readonly string Three;
   public readonly string Four;
   public readonly string Five;
   public readonly string Six;
   public readonly string Seven;
   public readonly string Eight;
   public readonly string Nine;
   public readonly string Ten;

   public Numbers(string one, string two, string three, string four, 
                  string five, string six, string seven, string eight,
                  string nine, string ten)
   {                     
      this.One = one;
      this.Two = two;
      this.Three = three;
      this.Four = four;
      this.Five = five;
      this.Six = six;
      this.Seven = seven;
      this.Eight = eight;
      this.Nine = nine;
      this.Ten = ten;                                    
   }                  
}
<Serializable> Public Class Numbers
   Public Readonly One As String
   Public ReadOnly Two As String
   Public ReadOnly Three As String
   Public ReadOnly Four As String
   Public ReadOnly Five As String
   Public ReadOnly Six As String
   Public ReadOnly Seven As String
   Public ReadOnly Eight As String
   Public ReadOnly Nine As String
   Public ReadOnly Ten As String
   
   Public Sub New(one As String, two As String, three As String, four As String, 
                  five As String, six As String, seven As String, eight As String,
                  nine As String, ten As String)
      Me.One = one
      Me.Two = two
      Me.Three = three
      Me.Four = four
      Me.Five = five
      Me.Six = six
      Me.Seven = seven
      Me.Eight = eight
      Me.Nine = nine
      Me.Ten = ten                                    
   End Sub                  
End Class

El siguiente código fuente de un archivo denominado CreateResources.cs (CreateResources. VB para Visual Basic) crea archivos de recursos XML para el idioma inglés predeterminado, así como para los idiomas francés, Portugués y ruso.The following source code from a file named CreateResources.cs (CreateResources.vb for Visual Basic) creates XML resource files for the default English language, as well as for the French, Portuguese, and Russian languages.

using System;
using System.Resources;

public class CreateResource
{
   public static void Main()
   {
      Numbers en = new Numbers("one", "two", "three", "four", "five",
                               "six", "seven", "eight", "nine", "ten");
      CreateResourceFile(en, "en");
      Numbers fr = new Numbers("un", "deux", "trois", "quatre", "cinq", 
                               "six", "sept", "huit", "neuf", "dix");
      CreateResourceFile(fr, "fr");
      Numbers pt = new Numbers("um", "dois", "três", "quatro", "cinco", 
                               "seis", "sete", "oito", "nove", "dez");
      CreateResourceFile(pt, "pt"); 
      Numbers ru = new Numbers("один", "два", "три", "четыре", "пять", 
                               "шесть", "семь", "восемь", "девять", "десять");                                                       
      CreateResourceFile(ru, "ru");
   }

   public static void CreateResourceFile(Numbers n, string lang)
   {
      string filename = @".\NumberResources" + 
                        (lang != "en" ? "." + lang : "" ) +
                        ".resx";
      ResXResourceWriter rr = new ResXResourceWriter(filename);
      rr.AddResource("Numbers", n);
      rr.Generate();
      rr.Close();    
   }
}
Imports System.Resources

Module CreateResource
   Public Sub Main()
      Dim en As New Numbers("one", "two", "three", "four", "five",
                            "six", "seven", "eight", "nine", "ten")
      CreateResourceFile(en, "en")
      Dim fr As New Numbers("un", "deux", "trois", "quatre", "cinq", 
                            "six", "sept", "huit", "neuf", "dix")
      CreateResourceFile(fr, "fr")
      Dim pt As New Numbers("um", "dois", "três", "quatro", "cinco", 
                            "seis", "sete", "oito", "nove", "dez")
      CreateResourceFile(pt, "pt") 
      Dim ru As New Numbers("один", "два", "три", "четыре", "пять", 
                            "шесть", "семь", "восемь", "девять", "десять")                                                       
      CreateResourceFile(ru, "ru")
   End Sub

   Public Sub CreateResourceFile(n As Numbers, lang As String)
      Dim filename As String = ".\NumberResources" + 
                               If(lang <> "en", "." + lang, "") +
                               ".resx"
      Dim rr As New ResXResourceWriter(filename)
      rr.AddResource("Numbers", n)
      rr.Generate()
      rr.Close()    
   End Sub
End Module

Los recursos se consumen en la siguiente aplicación, que establece la referencia cultural de la interfaz de usuario actual en francés (Francia), Portugués (Brasil) o ruso (Rusia).The resources are consumed by the following app, which sets the current UI culture to French (France), Portuguese (Brazil), or Russian (Russia). Llama al método GetObject(String) para obtener un objeto Numbers que contiene números localizados y el método GetObject(String, CultureInfo) para obtener un objeto Numbers que contiene números en inglés.It calls the GetObject(String) method to get a Numbers object that contains localized numbers and the GetObject(String, CultureInfo) method to get a Numbers object that contains English language numbers. A continuación, muestra los números impares utilizando la referencia cultural actual de la interfaz de usuario y el idioma inglés.It then displays odd numbers using the current UI culture and the English language. El archivo de código fuente se denomina ShowNumbers.cs (ShowNumbers. VB).The source code file is named ShowNumbers.cs (ShowNumbers.vb).

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

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   static string[] cultureNames = { "fr-FR", "pt-BR", "ru-RU" };
   
   public static void Main()
   {
      // Make any non-default culture the current culture.
      Random rnd = new Random();
      CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureNames[rnd.Next(0, cultureNames.Length)]);
      Thread.CurrentThread.CurrentUICulture = culture;
      Console.WriteLine("The current culture is {0}\n", CultureInfo.CurrentUICulture.Name);
      CultureInfo enCulture = CultureInfo.CreateSpecificCulture("en-US"); 

      ResourceManager rm = new ResourceManager(typeof(NumberResources));
      Numbers numbers = (Numbers) rm.GetObject("Numbers");
      Numbers numbersEn = (Numbers) rm.GetObject("Numbers", enCulture);
      Console.WriteLine("{0} --> {1}", numbers.One, numbersEn.One); 
      Console.WriteLine("{0} --> {1}", numbers.Three, numbersEn.Three); 
      Console.WriteLine("{0} --> {1}", numbers.Five, numbersEn.Five); 
      Console.WriteLine("{0} --> {1}", numbers.Seven, numbersEn.Seven); 
      Console.WriteLine("{0} --> {1}\n", numbers.Nine, numbersEn.Nine); 
   }
}

internal class NumberResources
{
}
// The example displays output like the following:
//       The current culture is pt-BR
//       
//       um --> one
//       três --> three
//       cinco --> five
//       sete --> seven
//       nove --> nine
Imports System.Globalization
Imports System.Resources 
Imports System.Threading

<assembly:NeutralResourcesLanguageAttribute("en-US")>

Module Example
   Dim cultureNames() As String = { "fr-FR", "pt-BR", "ru-RU" }
   
   Public Sub Main()
      ' Make any non-default culture the current culture.
      Dim rnd As New Random
      Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureNames(rnd.Next(0, cultureNames.Length)))
      Thread.CurrentThread.CurrentUICulture = culture
      Console.WriteLine("The current culture is {0}", CultureInfo.CurrentUICulture.Name)
      Console.WriteLine()
      Dim enCulture As CultureInfo = CultureInfo.CreateSpecificCulture("en-US") 

      Dim rm As New ResourceManager(GetType(NumberResources))
      Dim numbers As Numbers = CType(rm.GetObject("Numbers"), Numbers)
      Dim numbersEn As Numbers = CType(rm.GetObject("Numbers", enCulture), Numbers)
      Console.WriteLine("{0} --> {1}", numbers.One, numbersEn.One) 
      Console.WriteLine("{0} --> {1}", numbers.Three, numbersEn.Three) 
      Console.WriteLine("{0} --> {1}", numbers.Five, numbersEn.Five) 
      Console.WriteLine("{0} --> {1}", numbers.Seven, numbersEn.Seven) 
      Console.WriteLine("{0} --> {1}", numbers.Nine, numbersEn.Nine) 
      Console.WriteLine()       
   End Sub
End Module


Friend Class NumberResources
End Class

' The example displays output like the following:
'       The current culture is pt-BR
'       
'       um --> one
'       três --> three
'       cinco --> five
'       sete --> seven
'       nove --> nine

Puede usar el siguiente archivo por lotes para compilar y ejecutar la versión Visual Basic del ejemplo.You can use the following batch file to build and execute the Visual Basic version of the example. Si está utilizando C#, reemplace vbc por cscy reemplace la extensión de .vb por .cs.If you're using C#, replace vbc with csc, and replace the .vb extension with .cs.

  
vbc /t:library NumberInfo.vb  
  
vbc CreateResources.vb /r:NumberInfo.dll  
CreateResources  
  
resgen NumberResources.resx /r:NumberInfo.dll  
  
resgen NumberResources.fr.resx /r:Numberinfo.dll  
Md fr  
al /embed:NumberResources.fr.resources /culture:fr /t:lib /out:fr\ShowNumbers.resources.dll  
  
resgen NumberResources.pt.resx  /r:Numberinfo.dll  
Md pt  
al /embed:NumberResources.pt.resources /culture:pt /t:lib /out:pt\ShowNumbers.resources.dll  
  
resgen NumberResources.ru.resx /r:Numberinfo.dll  
Md ru  
al /embed:NumberResources.ru.resources /culture:ru /t:lib /out:ru\ShowNumbers.resources.dll  
  
vbc ShowNumbers.vb /r:NumberInfo.dll /resource:NumberResources.resources  
ShowNumbers.exe  

Comentarios

El método GetObject(String, CultureInfo) se utiliza para recuperar recursos que no son de cadena.The GetObject(String, CultureInfo) method is used to retrieve non-string resources. Estos incluyen valores que pertenecen a tipos de datos primitivos como Int32 o Double, mapas de bits (por ejemplo, un objeto System.Drawing.Bitmap) o objetos serializados personalizados.These include values that belong to primitive data types such as Int32 or Double, bitmaps (such as a System.Drawing.Bitmap object), or custom serialized objects. Normalmente, el objeto devuelto debe convertirse (en C#) o convertirse (en Visual Basic) en un objeto del tipo adecuado.Typically, the returned object must be cast (in C#) or converted (in Visual Basic) to an object of the appropriate type.

El recurso devuelto está localizado para la referencia cultural que especifica culture, o para la referencia cultural especificada por la propiedad CultureInfo.CurrentUICulture si se null``culture.The returned resource is localized for the culture that is specified by culture, or for the culture that is specified by the CultureInfo.CurrentUICulture property if culture is null. Si el recurso no está localizado para esa referencia cultural, el administrador de recursos usa reglas de reserva para cargar un recurso adecuado.If the resource is not localized for that culture, the resource manager uses fallback rules to load an appropriate resource. Si no se encuentra ningún conjunto utilizable de recursos localizados, el administrador de recursos recurre a los recursos de la referencia cultural predeterminada.If no usable set of localized resources is found, the resource manager falls back on the default culture's resources. Si no se encuentra un conjunto de recursos para la referencia cultural predeterminada, el método produce una excepción MissingManifestResourceException o, si se espera que el conjunto de recursos resida en un ensamblado satélite, una excepción MissingSatelliteAssemblyException.If a resource set for the default culture is not found, the method throws a MissingManifestResourceException exception or, if the resource set is expected to reside in a satellite assembly, a MissingSatelliteAssemblyException exception. Si el administrador de recursos puede cargar un conjunto de recursos adecuado pero no encuentra un recurso denominado name, el método devuelve null.If the resource manager can load an appropriate resource set but cannot find a resource named name, the method returns null.

La propiedad IgnoreCase determina si la comparación de name con los nombres de los recursos distingue entre mayúsculas y minúsculas (valor predeterminado) o distingue entre mayúsculas y minúsculas.The IgnoreCase property determines whether the comparison of name with the names of resources is case-insensitive (the default) or case-sensitive.

Precaución

Este método puede producir más excepciones de las que se muestran.This method can throw more exceptions than are listed. Una razón por la que puede ocurrir esto es si un método al que llama este método produce una excepción.One reason this might occur is if a method that this method calls throws an exception. Por ejemplo, podría producirse una excepción de FileLoadException si se produjera un error en la implementación o la instalación de un ensamblado satélite, SerializationException o si un tipo definido por el usuario produce una excepción definida por el usuario cuando se deserializa el tipo.For example, a FileLoadException exception might be thrown if an error was made deploying or installing a satellite assembly, or a SerializationException exception might be thrown if a user-defined type throws a user-defined exception when the type is deserialized.

Consideraciones sobre el rendimientoPerformance Considerations

Si llama varias veces al método GetObject con el mismo parámetro name, no dependa del método devolviendo una referencia al mismo objeto con cada llamada.If you call the GetObject method multiple times with the same name parameter, do not depend on the method returning a reference to the same object with each call. Esto se debe a que el método GetObject puede devolver una referencia a un objeto de recurso existente en una memoria caché, o puede volver a cargar el recurso y devolver una referencia a un nuevo objeto de recurso.This is because the GetObject method can return a reference to an existing resource object in a cache, or it can reload the resource and return a reference to a new resource object.

Seguridad

ReflectionPermission
Cuando se invoca enlazado en tiempo de ejecución mediante mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccess.Associated enumeration: MemberAccess.

Seguridad para subprocesos

El método GetObject(String, CultureInfo) es seguro para subprocesos.The GetObject(String, CultureInfo) method is thread safe.

Consulte también:

Se aplica a