2

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#.

Ziyad Godil
  • 2,620
  • 1
  • 14
  • 36

1 Answers1

2

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");
FetFrumos
  • 5,388
  • 8
  • 60
  • 98