ResourceManager.GetObject 메서드

정의

현재 문화권에 대해 지정된 비문자열 리소스의 값을 반환합니다.Returns the value of the specified non-string resource for the current culture.

오버로드

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

매개 변수

name
String

가져올 리소스의 이름입니다.The name of the resource to get.

반환

호출자의 현재 문화권 설정에 대해 지역화된 리소스의 값입니다.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.

예외

name 매개 변수는 null입니다.The name parameter is null.

지역화 된 리소스의 사용 가능한 설정 없음 찾았으면 및 기본 문화권 리소스가 없습니다.No usable set of localized resources has been found, and there are no default culture resources. 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.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. 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

예제

다음 예제에서는 GetObject(String) 메서드를 사용하여 사용자 지정 개체를 역직렬화합니다.The following example uses the GetObject(String) method to deserialize a custom object. 이 예제에는 PersonTable라는 다음 구조를 정의 하는 UIElements.cs (Visual Basic를 사용 하는 경우 UIElements) 라는 소스 코드 파일이 포함 되어 있습니다.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(Visual Basic의 경우 CreateResources.vb)라는 파일에서 온 다음 코드는 테이블 제목 및 영어에 대해 지역화된 앱에 대한 정보를 포함하는 PersonTable 개체를 저장하는 UIResources.resx라는 XML 리소스 파일을 만듭니다.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 옵션을 사용하여 UIElements.dll에 대한 참조와 함께 Resgen.exe를 제공해야 합니다. 이렇게 해야 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

설명

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 속성으로 정의 된 현재 스레드의 UI 문화권에 대해 지역화 됩니다.The returned resource is localized for the UI culture of the current thread, which is defined by the CultureInfo.CurrentUICulture property. 리소스가 해당 문화권에 대 한 지역화 되지 않으면, 리소스 관리자는 적절 한 리소스를 로드 하려면 대체 (fallback) 규칙을 사용 합니다.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 예외를 throw 하거나, 리소스 집합이 위성 어셈블리에 있어야 하는 경우 MissingSatelliteAssemblyException 예외를 throw 합니다.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).

주의

이 메서드는 나열 된 것 보다 자세한 예외를 throw 할 수 있습니다.This method can throw more exceptions than are listed. 이 문제가 발생 하는 한 가지 이유는이 메서드를 호출 하는 메서드는 예외를 throw 하는 경우.One reason this might occur is if a method that this method calls throws an exception. 예를 들어 위성 어셈블리를 배포 또는 설치 하는 동안 오류가 발생 한 경우 FileLoadException 예외가 throw 될 수 있으며, 형식이 deserialize 될 때 사용자 정의 형식이 사용자 정의 예외를 throw 하는 경우 SerializationException 예외가 throw 될 수 있습니다.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

동일한 name 매개 변수를 사용 하 여 GetObject 메서드를 여러 번 호출 하는 경우 각 호출과 동일한 개체에 대 한 참조를 반환 하는 메서드를 사용 하지 않습니다.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 메서드가 캐시의 기존 리소스 개체에 대 한 참조를 반환 하거나 리소스를 다시 로드 하 고 새 리소스 개체에 대 한 참조를 반환할 수 있기 때문입니다.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.

보안

ReflectionPermission
호출 될 때 런타임에 바인딩된 메커니즘을 통해 같은 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[]). 연관된 열거형: MemberAccessAssociated enumeration: MemberAccess.

추가 정보

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

매개 변수

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.

반환

지정된 문화권에 대해 지역화된 리소스의 값입니다.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.

예외

name 매개 변수는 null입니다.The name parameter is null.

사용할 수 있는 리소스 집합이 발견 되며 기본 문화권 리소스가 없는 합니다.No usable set of resources have been found, and there are no default culture resources. 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.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. 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic.

예제

다음 예제에서는 GetObject(String, CultureInfo) 메서드를 사용하여 사용자 지정 개체를 역직렬화합니다.The following example uses the GetObject(String, CultureInfo) method to deserialize a custom object. 이 예제에는 Numbers라는 구조를 정의 하는 NumberInfo.cs (Visual Basic를 사용 하는 경우 번호 정보 .vb) 라는 소스 코드 파일이 포함 되어 있습니다.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. 이 구조는 강의 영어가 아닌 말하기를 영어로 10으로 계산 하는 간단한 교육용 앱에서 사용할 것입니다.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 (Visual Basic의 경우 CreateResources.vb) 프랑스어, 포르투갈어 및 러시아어 언어 뿐만 아니라 기본 영어 언어에 대 한 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

리소스는 현재 UI 문화권을 프랑스어 (프랑스), 포르투갈어 (브라질) 또는 러시아어 (러시아) 설정 하는 다음 앱에서 사용 됩니다.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. 현재 UI 문화권 및 영어를 사용 하 여 홀수 번호를 표시 합니다.It then displays odd numbers using the current UI culture and the English language. 소스 코드 파일에는 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

빌드 및 Visual Basic 버전의 예제를 실행 하려면 다음 배치 파일을 사용할 수 있습니다.You can use the following batch file to build and execute the Visual Basic version of the example. 를 사용 C#하는 경우 vbccsc로 바꾸고 .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

설명

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로 지정 된 문화권 또는 culture null경우 CultureInfo.CurrentUICulture 속성으로 지정 된 문화권에 대해 지역화 됩니다.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. 리소스가 해당 문화권에 대 한 지역화 되지 않으면, 리소스 관리자는 적절 한 리소스를 로드 하려면 대체 (fallback) 규칙을 사용 합니다.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 예외를 throw 하거나, 리소스 집합이 위성 어셈블리에 있어야 하는 경우 MissingSatelliteAssemblyException 예외를 throw 합니다.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.

주의

이 메서드는 나열 된 것 보다 자세한 예외를 throw 할 수 있습니다.This method can throw more exceptions than are listed. 이 문제가 발생 하는 한 가지 이유는이 메서드를 호출 하는 메서드는 예외를 throw 하는 경우.One reason this might occur is if a method that this method calls throws an exception. 예를 들어 위성 어셈블리를 배포 또는 설치 하는 동안 오류가 발생 한 경우 FileLoadException 예외가 throw 될 수 있으며, 형식이 deserialize 될 때 사용자 정의 형식이 사용자 정의 예외를 throw 하는 경우 SerializationException 예외가 throw 될 수 있습니다.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

동일한 name 매개 변수를 사용 하 여 GetObject 메서드를 여러 번 호출 하는 경우 각 호출과 동일한 개체에 대 한 참조를 반환 하는 메서드를 사용 하지 않습니다.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 메서드가 캐시의 기존 리소스 개체에 대 한 참조를 반환 하거나 리소스를 다시 로드 하 고 새 리소스 개체에 대 한 참조를 반환할 수 있기 때문입니다.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.

보안

ReflectionPermission
호출 될 때 런타임에 바인딩된 메커니즘을 통해 같은 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[]). 연관된 열거형: MemberAccessAssociated enumeration: MemberAccess.

스레드 보안

GetObject(String, CultureInfo) 메서드는 스레드로부터 안전 합니다.The GetObject(String, CultureInfo) method is thread safe.

추가 정보

적용 대상