ResourceManager.GetObject Method

Definition

Возвращает значение указанного нестрокового ресурса для текущего языка и региональных параметров.Returns the value of the specified non-string resource for the current culture.

Overloads

GetObject(String)

Возвращает значение указанного нестрокового ресурса.Returns the value of the specified non-string resource.

GetObject(String, CultureInfo)

Возвращает значение указанного нестрокового ресурса, локализованного для указанного языка и региональных параметров.Gets the value of the specified non-string resource localized for the specified culture.

GetObject(String)

Возвращает значение указанного нестрокового ресурса.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

Parameters

name
String

Имя получаемого ресурса.The name of the resource to get.

Returns

Object

Значение ресурса, локализованного для текущих настроек языка и региональных параметров вызывающего объекта.The value of the resource localized for the caller's current culture settings. Если соответствующий набор ресурсов существует, но параметр name не найден, то метод возвращает значение null.If an appropriate resource set exists but name cannot be found, the method returns null.

Exceptions

Параметр name содержит значение null.The name parameter is null.

Не найден подходящий набор локализованных ресурсов и отсутствуют ресурсы языка и региональных параметров по умолчанию.No usable set of localized resources has been found, and there are no default culture resources. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Ресурсы языка и региональных параметров по умолчанию находятся во вспомогательной сборке, которую не удалось найти.The default culture's resources reside in a satellite assembly that could not be found. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Examples

В следующем примере для десериализации настраиваемого объекта используется метод GetObject(String) .The following example uses the GetObject(String) method to deserialize a custom object. Пример включает файл с исходным кодом с именем UIElements.cs (UIElements. vb, если вы используете Visual Basic), который определяет следующую структуру с именем 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. Эта структура предназначена для использования подпрограммой общего отображения таблиц, которая отображает локализованные имена для столбцов таблиц.This structure is intended to be used by a general table display routine that displays the localized names of table columns. Обратите внимание, что структура PersonTable помечена атрибутом 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

Следующий код из файла CreateResources.cs (CreateResources.vb для Visual Basic) создает файл ресурсов XML с именем UIResources.resx, где хранится заголовок таблицы, и объект PersonTable , содержащий сведения о приложении, локализуемые для английского языка.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

После этого приведенный ниже код из файла GetObject.cs (GetObject.vb) извлекает ресурсы и выводит их на консоль.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

Создать нужный файл ресурсов, сборки и запустить приложение можно, запустив следующий пакетный файл.You can build the necessary resource file and assemblies and run the app by executing the following batch file. Необходимо использовать параметр /r , чтобы предоставить Resgen.exe ссылку на UIElements.dll для доступа к информации о структуре 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. Если используется C#, замените имя компилятора vbc на cscи расширение .vb на .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

Remarks

Метод GetObject используется для получения нестроковых ресурсов.The GetObject method is used to retrieve non-string resources. К ним относятся значения, принадлежащие примитивным типам данных, например Int32 или Double, точечные рисунки (например, объект System.Drawing.Bitmap) или пользовательские сериализованные объекты.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. Как правило, возвращаемый объект должен быть приведен ( C#в) или преобразован (в Visual Basic) в объект соответствующего типа.Typically, the returned object must be cast (in C#) or converted (in Visual Basic) to an object of the appropriate type.

Возвращаемый ресурс локализуется для языка и региональных параметров пользовательского интерфейса текущего потока, который определяется свойством CultureInfo.CurrentUICulture.The returned resource is localized for the UI culture of the current thread, which is defined by the CultureInfo.CurrentUICulture property. Если ресурс не локализован для этого языка и региональных параметров, диспетчер ресурсов использует резервные правила для загрузки соответствующего ресурса.If the resource is not localized for that culture, the resource manager uses fallback rules to load an appropriate resource. Если не найдено ни одного подходящего набора локализованных ресурсов, ResourceManager возвращается к ресурсам языка и региональных параметров по умолчанию.If no usable set of localized resources is found, the ResourceManager falls back on the default culture's resources. Если набор ресурсов для языка и региональных параметров по умолчанию не найден, метод создает исключение MissingManifestResourceException или, если предполагается, что набор ресурсов находится во вспомогательной сборке, 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. Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти ресурс с именем name, метод возвращает null.If the resource manager can load an appropriate resource set but cannot find a resource named name, the method returns null.

Свойство IgnoreCase определяет, будет ли сравнение name с именами ресурсов без учета регистра или с учетом регистра (по умолчанию).The IgnoreCase property determines whether the comparison of name with the names of resources is case-insensitive or case-sensitive (the default).

Caution

Этот метод может создавать больше исключений, чем указано в списке.This method can throw more exceptions than are listed. Одна из причин этого может возникнуть, если метод, который вызывает этот метод, создает исключение.One reason this might occur is if a method that this method calls throws an exception. Например, исключение FileLoadException может возникать, если произошла ошибка при развертывании или установке вспомогательной сборки, или исключение SerializationException может возникнуть, если определяемый пользователем тип вызывает исключение, определяемое пользователем, при десериализации типа.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.

Вопросы производительностиPerformance Considerations

Если вы вызываете метод GetObject несколько раз с одним и тем же параметром name, не зависят от метода, возвращающего ссылку на тот же объект с каждым вызовом.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. Это обусловлено тем, что метод GetObject может возвращать ссылку на существующий объект ресурса в кэше или перезагружать ресурс и возвращать ссылку на новый объект Resource.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.

See also

GetObject(String, CultureInfo)

Возвращает значение указанного нестрокового ресурса, локализованного для указанного языка и региональных параметров.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

Parameters

name
String

Имя получаемого ресурса.The name of the resource to get.

culture
CultureInfo

Язык и региональные параметры, для которых локализуется этот ресурс.The culture for which the resource is localized. Если ресурс для языка и региональных параметров не локализован, диспетчер ресурсов использует резервные правила для поиска подходящего ресурса.If the resource is not localized for this culture, the resource manager uses fallback rules to locate an appropriate resource.

Если это значение равно null, объект CultureInfo получается с помощью свойства CurrentUICulture.If this value is null, the CultureInfo object is obtained by using the CurrentUICulture property.

Returns

Object

Значение ресурса, локализованного для указанного языка и региональных параметров.The value of the resource, localized for the specified culture. Если соответствующий набор ресурсов существует, но параметр name не найден, то метод возвращает значение null.If an appropriate resource set exists but name cannot be found, the method returns null.

Exceptions

Параметр name содержит значение null.The name parameter is null.

Не было найдено никаких возможных наборов ресурсов и отсутствуют ресурсы языка и региональных параметров по умолчанию.No usable set of resources have been found, and there are no default culture resources. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Ресурсы языка и региональных параметров по умолчанию находятся во вспомогательной сборке, которую не удалось найти.The default culture's resources reside in a satellite assembly that could not be found. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

Examples

В следующем примере для десериализации настраиваемого объекта используется метод GetObject(String, CultureInfo) .The following example uses the GetObject(String, CultureInfo) method to deserialize a custom object. Пример включает файл с исходным кодом с именем NumberInfo.cs (Нумберинфо. vb, если вы используете Visual Basic), который определяет следующую структуру с именем 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. Эта структура предназначена для использования в простом приложении для образовательных учреждений, в котором студенты говорят на английском языке, а не на английском.This structure is intended to be used by a simple educational app that teaches non-English speaking students to count to ten in English. Обратите внимание, что класс Numbers помечен атрибутом 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

Следующий исходный код из файла с именем CreateResources.cs (CreateResources. vb для Visual Basic) создает файлы ресурсов XML для английского языка по умолчанию, а также для французского, португальского и русского языков.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

Ресурсы потребляются следующим приложением, которое устанавливает для текущего языка пользовательского интерфейса значение французский (Франция), португальский (Бразилия) или русский (Россия).The resources are consumed by the following app, which sets the current UI culture to French (France), Portuguese (Brazil), or Russian (Russia). Он вызывает метод GetObject(String), чтобы получить объект Numbers, содержащий локализованные числа, и метод GetObject(String, CultureInfo), чтобы получить объект Numbers, содержащий английские номера языков.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. Затем он отображает нечетные числа, используя текущий язык и региональные параметры пользовательского интерфейса и английский язык.It then displays odd numbers using the current UI culture and the English language. Файл с исходным кодом называется ShowNumbers.cs (Шовнумберс. 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

Для сборки и выполнения Visual Basic версии примера можно использовать следующий пакетный файл.You can use the following batch file to build and execute the Visual Basic version of the example. Если вы используете C#, замените vbc cscи замените расширение .vb на .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

Remarks

Метод GetObject(String, CultureInfo) используется для получения нестроковых ресурсов.The GetObject(String, CultureInfo) method is used to retrieve non-string resources. К ним относятся значения, принадлежащие примитивным типам данных, например Int32 или Double, точечные рисунки (например, объект System.Drawing.Bitmap) или пользовательские сериализованные объекты.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. Как правило, возвращаемый объект должен быть приведен ( C#в) или преобразован (в Visual Basic) в объект соответствующего типа.Typically, the returned object must be cast (in C#) or converted (in Visual Basic) to an object of the appropriate type.

Возвращаемый ресурс локализуется для языка и региональных параметров, заданных culture, или для языка и региональных параметров, заданных свойством CultureInfo.CurrentUICulture, если culture null.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. Если ресурс не локализован для этого языка и региональных параметров, диспетчер ресурсов использует резервные правила для загрузки соответствующего ресурса.If the resource is not localized for that culture, the resource manager uses fallback rules to load an appropriate resource. Если не найдено ни одного подходящего набора локализованных ресурсов, диспетчер ресурсов вернется к ресурсам языка и региональных параметров по умолчанию.If no usable set of localized resources is found, the resource manager falls back on the default culture's resources. Если набор ресурсов для языка и региональных параметров по умолчанию не найден, метод создает исключение MissingManifestResourceException или, если предполагается, что набор ресурсов находится во вспомогательной сборке, 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. Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти ресурс с именем name, метод возвращает null.If the resource manager can load an appropriate resource set but cannot find a resource named name, the method returns null.

Свойство IgnoreCase определяет, учитывается ли регистр при сравнении name с именами ресурсов (по умолчанию) или с учетом регистра.The IgnoreCase property determines whether the comparison of name with the names of resources is case-insensitive (the default) or case-sensitive.

Caution

Этот метод может создавать больше исключений, чем указано в списке.This method can throw more exceptions than are listed. Одна из причин этого может возникнуть, если метод, который вызывает этот метод, создает исключение.One reason this might occur is if a method that this method calls throws an exception. Например, исключение FileLoadException может возникать, если произошла ошибка при развертывании или установке вспомогательной сборки, или исключение SerializationException может возникнуть, если определяемый пользователем тип вызывает исключение, определяемое пользователем, при десериализации типа.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.

Вопросы производительностиPerformance Considerations

Если вы вызываете метод GetObject несколько раз с одним и тем же параметром name, не зависят от метода, возвращающего ссылку на тот же объект с каждым вызовом.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. Это обусловлено тем, что метод GetObject может возвращать ссылку на существующий объект ресурса в кэше или перезагружать ресурс и возвращать ссылку на новый объект Resource.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.

Thread Safety

Метод GetObject(String, CultureInfo) является потокобезопасным.The GetObject(String, CultureInfo) method is thread safe.

See also

Applies to