ResourceManager::GetObject Method (String)
Returns the value of the specified non-string resource.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- name
- Type: System::String
The name of the resource to get.
Return Value
Type: System::ObjectThe value of the resource localized for the caller's current culture settings. If an appropriate resource set exists but name cannot be found, the method returns nullptr.
| Exception | Condition |
|---|---|
| ArgumentNullException | The name parameter is nullptr. |
| MissingManifestResourceException | No usable set of resources has been found, and there are no neutral culture resources. For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic. |
| MissingSatelliteAssemblyException | The default culture's resources reside in a satellite assembly that could not be found. For information about how to handle this exception, see the "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" section in the ResourceManager class topic. |
The GetObject method is used to retrieve non-string resources. 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. Typically, the returned object must be cast (in C#) or converted (in Visual Basic) to an object of the appropriate type.
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. If no usable set of localized resources is found, the ResourceManager falls back on the default culture's resources. If a resource set for the default culture is not found, the method throws a MissingManifestResourceException exception. If the resource manager can load an appropriate resource set but cannot find a resource named name, the method returns nullptr.
Note |
|---|
The GetObject method is thread-safe. |
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. For example, a FileLoadException might be thrown if an error was made deploying or installing a satellite assembly, or a SerializationException might be thrown if a user-defined type throws a user-defined exception when the type is deserialized. |
Performance Considerations
If you call the GetObject method multiple times with the same name parameter, do not depend on the return value being a reference to the same object. This is because the GetObject method can return a reference to an existing resource object in a cache, or can reload the resource and return a reference to a new resource object.
The following example uses the GetObject method to deserialize a custom object. 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. Note that the PersonTable structure is marked with the SerializableAttribute attribute.
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.
The following code in a source code file named GetObject.cs (GetObject.vb) then retrieves the resources and displays them to the console.
You can build the necessary resource file and assemblies and run the app by executing the following batch file. 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. 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
- ReflectionPermission
when invoked late-bound through mechanisms such as Type::InvokeMember. Associated enumeration: ReflectionPermissionFlag::MemberAccess.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note