如何获取密钥基于资源文件中的值使用c#?

时间:2017-07-26 11:52:24

标签: c# xamarin.forms resx

我想要基于密钥名称。 我的资源代码在下面

<data name="FoodTruck" xml:space="preserve"><value>Food truck</value></data>

我有价值食物卡车现在我想要关键名称 FoodTruck

我正在使用Xamarin C#。

1 个答案:

答案 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");