ResourceManager.GetResourceSet(CultureInfo, Boolean, Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
检索特定区域性的资源集合。
public:
virtual System::Resources::ResourceSet ^ GetResourceSet(System::Globalization::CultureInfo ^ culture, bool createIfNotExists, bool tryParents);
public virtual System.Resources.ResourceSet? GetResourceSet (System.Globalization.CultureInfo culture, bool createIfNotExists, bool tryParents);
public virtual System.Resources.ResourceSet GetResourceSet (System.Globalization.CultureInfo culture, bool createIfNotExists, bool tryParents);
abstract member GetResourceSet : System.Globalization.CultureInfo * bool * bool -> System.Resources.ResourceSet
override this.GetResourceSet : System.Globalization.CultureInfo * bool * bool -> System.Resources.ResourceSet
Public Overridable Function GetResourceSet (culture As CultureInfo, createIfNotExists As Boolean, tryParents As Boolean) As ResourceSet
参数
- culture
- CultureInfo
将要检索资源的区域性。
- createIfNotExists
- Boolean
如果尚未加载,true
要加载资源集;否则为 false
。
- tryParents
- Boolean
true
表示使用资源回退加载相应资源(如果找不到资源);false
表示绕过资源回退进程。
返回
指定区域性的资源集。
例外
culture
参数为 null
。
tryParents
是 true
,未找到可用的资源集,并且没有默认区域性的资源。
示例
以下示例调用 GetResourceSet 方法来检索法国 (法国) 区域性的区域性特定资源。 然后,它会枚举资源集中的所有资源。 它包含名为 ShowNumbers.exe 的可执行文件的源代码。 它还包含以下两个文本文件,其中包含数字的名称。 第一个 NumberResources.txt 包含英语中从 1 到 10 的数字名称:
one=one
two=two
three=three
four=four
five=five
six=six
seven=seven
eight=eight
nine=nine
ten=ten
第二个 NumberResources.fr-FR.txt 包含法语中从 1 到 4 的数字名称:
one=un
two=deux
three=trois
four=quatre
可以使用批处理文件生成资源文件,将英语资源文件嵌入可执行文件,并为法语资源创建附属程序集。 下面是使用 Visual Basic 编译器生成可执行文件的批处理文件:
resgen NumberResources.txt
vbc shownumbers.vb /resource:NumberResources.resources
md fr-FR
resgen NumberResources.fr-FR.txt
al /out:fr-FR\ShowNumbers.resources.dll /culture:fr-FR /embed:NumberResources.fr-FR.resources
对于 C# 编译器,可以使用以下批处理文件:
resgen NumberResources.txt
csc shownumbers.cs /resource:NumberResources.resources
md fr-FR
resgen NumberResources.fr-FR.txt
al /out:fr-FR\ShowNumbers.resources.dll /culture:fr-FR /embed:NumberResources.fr-FR.resources
using System;
using System.Globalization;
using System.Resources;
public class Example
{
public static void Main()
{
String[] numbers = { "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten" };
var rm = new ResourceManager(typeof(NumberResources));
ResourceSet rs = rm.GetResourceSet(CultureInfo.CreateSpecificCulture("fr-FR"),
true, false);
if (rs == null) {
Console.WriteLine("No resource set.");
return;
}
foreach (var number in numbers)
Console.WriteLine("{0,-10} '{1}'", number + ":", rs.GetString(number));
}
}
internal class NumberResources {}
// The example displays the following output:
// one: 'un'
// two: 'deux'
// three: 'trois'
// four: 'quatre'
// five: ''
// six: ''
// seven: ''
// eight: ''
// nine: ''
// ten: ''
Imports System.Globalization
Imports System.Resources
Module Example
Public Sub Main()
Dim numbers() As String = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" }
Dim rm As New ResourceManager(GetType(NumberResources))
Dim rs As ResourceSet = rm.GetResourceSet(CultureInfo.CreateSpecificCulture("fr-FR"), True, False)
If rs Is Nothing Then Console.WriteLine("No resource set.") : Exit Sub
For Each number In numbers
Console.WriteLine("{0,-10} '{1}'", number + ":", rs.GetString(number))
Next
End Sub
End Module
Public Class NumberResources
End Class
' The example displays the following output:
' one: 'un'
' two: 'deux'
' three: 'trois'
' four: 'quatre'
' five: ''
' six: ''
' seven: ''
' eight: ''
' nine: ''
' ten: ''
请注意,如果将 参数的值createIfNotExists
更改为 false
,方法调用将null
返回 ,因为资源管理器尚未加载法语资源。
注解
返回的资源集表示为指定区域性本地化的资源。 如果资源尚未针对该区域性进行本地化,并且 tryParents
为 true
, GetResourceSet 请使用资源回退规则来加载相应的资源。 如果 tryParents
为 false
并且找不到区域性特定的资源集,则该方法返回 null
。 有关资源回退的详细信息,请参阅 打包和部署 资源一文中的“资源回退过程”部分。