我想要基于值的密钥名称。 我的资源代码在下面
<data name="FoodTruck" xml:space="preserve"><value>Food truck</value></data>
我有价值食物卡车现在我想要关键名称 FoodTruck 。
我正在使用Xamarin C#。
答案 0 :(得分:1)
尝试代码:
System.Resources.ResourceManager rm = typeof(AppResources)
.GetRuntimeFields()
.First(m => m.Name == "resourceMan")
.GetValue(typeof(AppResources)) as System.Resources.ResourceManager;
//or this variant
var rm = new System.Resources.ResourceManager(typeof(AppResources));
//CultureInfo culture
ResourceSet rs = rm.GetResourceSet(culture, true, false);
var nameItem = rs.OfType<DictionaryEntry>().FirstOrDefault(i => i.Value == "YourValue");
var name = nameItem.Key.ToString();
在平台特定项目中使用它(Xamarin.Droid或Xamarin.iOS)
示例:
在PCL项目中:
public interface IGetName
{
string GetName (string value);
}
Android项目中的:
[assembly: Dependency(typeof(AppGetName ))]
namespace YourNamespace
....
public class AppGetName : IGetName
{
public string GetName (string value)
{
System.Resources.ResourceManager rm = typeof(AppResources)
.GetRuntimeFields()
.First(m => m.Name == "resourceMan")
.GetValue(typeof(AppResources)) as
System.Resources.ResourceManager;
//CultureInfo culture
ResourceSet rs = rm.GetResourceSet(culture, true, false);
var nameItem = rs.OfType<DictionaryEntry>().FirstOrDefault(i => i.Value == "YourValue");
var name = nameItem.Key.ToString();
return name;
}
}
在PCL项目中使用:
var getName = DependencyService.Get<IAppGetName>();
var name = getName.GetName("YourValue");