Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo ResourceManager.GetObject (String, CultureInfo)

 

Data di pubblicazione: ottobre 2016

Ottiene il valore della risorsa non di tipo stringa specificata localizzata per le impostazioni cultura specificate.

Spazio dei nomi:   System.Resources
Assembly:  mscorlib (in mscorlib.dll)

public virtual object GetObject(
	string name,
	CultureInfo culture
)

Parametri

name
Type: System.String

Nome della risorsa da ottenere.

culture
Type: System.Globalization.CultureInfo

Impostazioni cultura in base alle quali viene localizzata la risorsa. Se la risorsa non è localizzata per queste impostazioni cultura, il gestore delle risorse userà le regole di fallback per individuare una risorsa appropriata.

Se questo valore è null, viene ottenuto l'oggetto CultureInfo usando la proprietà CultureInfo.CurrentUICulture.

Valore restituito

Type: System.Object

Valore della risorsa, localizzata per le impostazioni cultura specificate. Se un set di risorse appropriato esiste ma non è possibile trovare l'elemento name, il metodo restituisce null.

Exception Condition
ArgumentNullException

Il valore del parametro name è null.

MissingManifestResourceException

Non sono stati trovati alcun set di risorse utilizzabili e non sono presenti risorse delle impostazioni cultura predefinite. Per informazioni su come gestire questa eccezione, vedere la sezione "Gestione di eccezioni MissingManifestResourceException e MissingSatelliteAssemblyException" il ResourceManager argomento relativo alla classe.

MissingSatelliteAssemblyException

Risorse della lingua predefinita risiedono in un assembly satellite che non è stato trovato. Per informazioni su come gestire questa eccezione, vedere la sezione "Gestione di eccezioni MissingManifestResourceException e MissingSatelliteAssemblyException" il ResourceManager argomento relativo alla classe.

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0

Il GetObject(String, CultureInfo) metodo è thread-safe.

Il GetObject(String, CultureInfo) metodo viene utilizzato per recuperare le risorse non di tipo stringa. Inclusi i valori che appartengono a tipi di dati primitivi, ad esempio Int32 o Double, bitmap (ad esempio un System.Drawing.Bitmap oggetto), o di oggetti serializzati personalizzato. In genere, l'oggetto restituito deve essere eseguito il cast (in c#) o convertire (in Visual Basic) a un oggetto del tipo appropriato.

La risorsa restituita è localizzata per le impostazioni cultura specificato dalla culture, o per le impostazioni cultura specificati tramite il CultureInfo.CurrentUICulture proprietà se culture è null. Se la risorsa non è localizzata per le impostazioni cultura, il gestore di risorse utilizza le regole di fallback per caricare una risorsa appropriata. Se non viene trovato alcun set di risorse localizzate utilizzabile, il gestore delle risorse ricorre risorse della lingua predefinita. Se non viene trovata una set di risorse per la lingua predefinita, il metodo genera un MissingManifestResourceException eccezione oppure, se il set di risorse si trovano in un assembly satellite, è previsto un MissingSatelliteAssemblyException (eccezione). Se il gestore di risorse è possibile caricare una risorsa appropriata impostato ma Impossibile trovare una risorsa denominata name, il metodo restituisce null.

Il IgnoreCase proprietà determina se il confronto di name con i nomi delle risorse è tra maiuscole e minuscole (predefinito) o tra maiuscole e minuscole.

System_CAPS_cautionAttenzione

Questo metodo può generare più eccezioni rispetto a quelle elencate. Questa situazione può verificarsi uno dei motivi è se un metodo che chiama questo metodo genera un'eccezione. Ad esempio, un FileLoadException eccezione potrebbe essere generata se un errore durante la distribuzione o installazione di un assembly satellite, o un SerializationException eccezione potrebbe essere generata se un tipo definito dall'utente genera un'eccezione definita dall'utente quando il tipo viene deserializzato.

Se si chiama il GetObject metodo più volte con lo stesso name parametro, non basarsi sul metodo restituisce un riferimento allo stesso oggetto a ogni chiamata. In questo modo il GetObject metodo può restituire un riferimento a un oggetto risorsa esistente in una cache oppure è possibile ricaricare la risorsa e restituiscono un riferimento a un nuovo oggetto risorsa.

Nell'esempio seguente viene utilizzata la GetObject(String, CultureInfo) metodo per deserializzare un oggetto personalizzato. L'esempio include un file di codice sorgente denominato NumberInfo.cs (NumberInfo.vb se si utilizza Visual Basic) che definisce la seguente struttura denominata Numbers. Questa struttura deve essere utilizzato da una semplice app didattico insegnare madrelingua inglese per il conteggio e dieci in inglese. Si noti che la Numbers classe è contrassegnata con il SerializableAttribute attributo.

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;                                    
   }                  
}

Il seguente codice sorgente da un file denominato CreateResources.cs (CreateResources. vb per Visual Basic) consente di creare file di risorse XML per la lingua inglese predefinita, nonché per le lingue francese e portoghese, russo.

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();    
   }
}

Le risorse vengono utilizzate dall'app seguente, che imposta le impostazioni cultura correnti dell'interfaccia utente per francese (Francia), portoghese (Brasile) o russo (Russia). Chiama il GetObject(String) per ottenere un Numbers oggetto che contiene numeri localizzati e GetObject(String, CultureInfo) metodo per ottenere un Numbers oggetto che contiene i numeri in lingua inglese. Viene quindi Visualizza i numeri dispari utilizzando le impostazioni cultura correnti dell'interfaccia utente e la lingua inglese. File di codice sorgente è denominato 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

È possibile utilizzare il seguente file batch per compilare ed eseguire la versione di Visual Basic dell'esempio. Se si utilizza c#, sostituire vbc con csc, e sostituire il .vb estensione con .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

ReflectionPermission

when invoked late-bound through mechanisms such as M:System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]). Associated enumeration: F:System.Security.Permissions.ReflectionPermissionFlag.MemberAccess.

Torna all'inizio
Mostra: