HybridResourceManagerGetStream(String, CultureInfo) Method

Returns a MemoryStream instance from the resource of the specified name and culture.

Definition

Namespace: KGySoft.Resources
Assembly: KGySoft.CoreLibraries (in KGySoft.CoreLibraries.dll) Version: 8.1.0
C#
public virtual MemoryStream? GetStream(
	string name,
	CultureInfo? culture
)

Parameters

name  String
The name of the resource to retrieve.
culture  CultureInfo
An object that represents 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. If this value is , the CultureInfo object is obtained by using the CultureInfo.CurrentUICulture property.

Return Value

MemoryStream
A MemoryStream object from the specified resource localized for the specified culture, or if name cannot be found in a resource set.

Implements

IExpandoResourceManagerGetStream(String, CultureInfo)

Remarks

Depending on the value of the CloneValues property, the GetObject methods return either a full copy of the specified resource, or always the same instance. For memory streams none of them are ideal because a full copy duplicates the inner buffer of a possibly large array of bytes, whereas returning the same stream instance can cause issues with conflicting positions or disposed state. Therefore the GetStream methods can be used to obtain a new read-only MemoryStream wrapper around the same internal buffer, regardless the current value of the CloneValues property.

GetStream can be used also for byte array resources. However, if the value is returned from compiled resources, then always a new copy of the byte array will be wrapped.

If SafeMode is and name is neither a MemoryStream nor a byte array resource, then instead of throwing an InvalidOperationException the method returns a stream wrapper for the same string value that is returned by the GetString method, which will be the raw XML content for non-string resources.

  Note

The internal buffer is tried to be obtained by reflection in the first place. On platforms, which have possibly unknown non-public member names the public APIs are used, which may copy the content in memory.

Exceptions

ArgumentNullExceptionname is .
ObjectDisposedExceptionThe HybridResourceManager is already disposed.
InvalidOperationExceptionSafeMode is and the type of the resource is neither MemoryStream nor byte[].
MissingManifestResourceExceptionNo usable set of localized resources has been found, and there are no default culture resources. For information about how to handle this exception, see the notes under Instantiating a ResXResourceManager object section of the description of the ResXResourceManager class.

See Also