问题描述
在C#/.NET应用程序编程开发中,假如有这样的资源文件(.resx):
键 值
key_1 value_1
key_2 value_2
当前需要根据资源文件数据中的值获取对应的键名,比如知道资源文件数据值为value_1
,通过C#/.NET程序如何获取到对应的键名key_1
呢?
方案一
使用ResourceManager
反射获取,如下:
private string GetResxNameByValue(string value)
{
System.Resources.ResourceManager rm = new System.Resources.ResourceManager("YourNamespace.YourResxFileName", this.GetType().Assembly);
var entry=
rm.GetResourceSet(System.Threading.Thread.CurrentThread.CurrentCulture, true, true)
.OfType<DictionaryEntry>()
.FirstOrDefault(e => e.Value.ToString() ==value);
var key = entry.Key.ToString();
return key;
}
方案二
编写一个资源文件的帮助类,如下:
using System.Collections;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Threading;
public class ResourceHelper
{
/// <summary>
/// 资源帮助类
/// </summary>
/// <param name="resourceName"></param>
/// <param name="assembly"></param>
public ResourceHelper(string resourceName, Assembly assembly)
{
ResourceManager = new ResourceManager(resourceName, assembly);
}
private ResourceManager ResourceManager { get; set; }
public string GetResourceName(string value)
{
DictionaryEntry entry = ResourceManager.GetResourceSet(Thread.CurrentThread.CurrentCulture, true, true).OfType<DictionaryEntry>().FirstOrDefault(dictionaryEntry => dictionaryEntry.Value.ToString() == value);
return entry.Key.ToString();
}
public string GetResourceValue(string name)
{
string value = ResourceManager.GetString(name);
return !string.IsNullOrEmpty(value) ? value : null;
}
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册