I want key Name based on value. My resource code below
<data name="FoodTruck" xml:space="preserve"><value>Food truck</value></data>
I have value Food truck now I want Key name FoodTruck.
I am using Xamarin C#.
I want key Name based on value. My resource code below
<data name="FoodTruck" xml:space="preserve"><value>Food truck</value></data>
I have value Food truck now I want Key name FoodTruck.
I am using Xamarin C#.
Try it code:
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();
use it in platform specific projects (Xamarin.Droid or Xamarin.iOS)
Example:
in PCL projects:
public interface IGetName
{
string GetName (string value);
}
in Android project:
[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;
}
}
using in PCL projects:
var getName = DependencyService.Get<IAppGetName>();
var name = getName.GetName("YourValue");