我想使用枚举作为键来从资源文件中获取价值 在我的项目中,我使用和方法从resx文件中获取价值:
using System;
using System.Reflection;
using System.Resources;
using system.web;
using Utility.Tools.Extensionmethods;
using Utility.Tools.Infrastructure;
using Utility.Tools.Utilities.Storage;
namespace MultiLanguage
{
public enum LocaleConfig_Type : byte
{
FA,AR,DARI
}
public class MultiLangToolkit
{
public static string GetTranslate(MainKeys key)
{
var lang = LanguegesToolkit.getcurentLang();
return GetTranslate(key,lang);
}
public static string GetTranslate(MainKeys key,LocaleConfig_Type locale)
{
try
{
string value;
switch (locale)
{ case LocaleConfig_Type.FA:
{
var fa_resx = new ResourceManager("MultiLanguage.FA",Assembly.GetExecutingAssembly());
value = fa_resx.GetString(key.ToString());
}
break;
case LocaleConfig_Type.AR:
{
var ar_resx = new ResourceManager("MultiLanguage.AR",Assembly.GetExecutingAssembly());
value = ar_resx.GetString(key.ToString());
}
break;
case LocaleConfig_Type.DARI:
{
var dari_resx = new ResourceManager("MultiLanguage.DARI",Assembly.GetExecutingAssembly());
value = dari_resx.GetString(key.ToString());
}
break;
default:
value = "No Language Selected!";
break;
}
if (!string.IsnullOrEmpty(value))
return value;
return "Key Or Value NotFound!";
}
catch (Exception)
{
return "Exception when translate";
}
}
}
public class LanguegesToolkit
{
public static LocaleConfig_Type getcurentLang()
{
try
{
object sessionDefalutLocale = null;
if (HttpContext.Current.Session != null)
{
sessionDefalutLocale = HttpContext.Current.Session[Sessionmanager.SESSION_USER_DEFAULT_LOCAL];
}
if (sessionDefalutLocale != null)
{
return sessionDefalutLocale.ToString().ToEnum<LocaleConfig_Type>();
}
else
{
var defaultLocale = RequestGlobalProperties.CurrentUserRequest.DefaultLocale;
if (defaultLocale.IsnullOrEmpty())
return Constants.ServiceDefaultLocale.ToEnum<LocaleConfig_Type>();
return defaultLocale.ToEnum<LocaleConfig_Type>();
}
}
catch (Exception)
{
return LocaleConfig_Type.FA;
}
}
}
}
我有一个枚举类来存储枚举:
namespace MultiLanguage
{
public enum MainKeys
{
/// <summary>
/// login to account
/// </summary>
Sign_in,/// <summary>
/// password
/// </summary>
Password,/// <summary>
/// user name
/// </summary>
username
}
}
并且我使用此代码从我的resx文件中获取价值
MultiLanguage.MultiLangToolkit.GetTranslate(MultiLanguage.MainKeys.username)
但是这种类型的代码太多,无法从我的resx文件中获取值 我只想在上面的代码瞬间编写此代码:
MultiLanguage.MainKeys.username
只需调用枚举并从resx文件获取转换后的值
我在dll文件中使用此代码在其他项目中使用该代码,并使用和枚举作为字符串的关键时刻,因为字符串不是一个好选择,也不是我的原因和运行时问题,因此很难对其进行调试。并在枚举上使用summery来查看这是resx文件中的值(是的,我将rex文件中的值复制到summery中)
我怎样才能做到这一点?
那有可能吗?