链接并枚举以从resx文件中获取价值

我想使用枚举作为键来从资源文件中获取价值 在我的项目中,我使用和方法从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中)
我怎样才能做到这一点? 那有可能吗?

rhrhok 回答:链接并枚举以从resx文件中获取价值

如果您真的想坚持使用枚举,那么您可以创建一个扩展方法来简化用法。像

<form role="form" action="registration.php" method="post" id="login-form">
    <div class="form-group">
        <label for="username" class="sr-only">username</label>
        <input type="text" name="username" id="username" class="form-control" placeholder="Enter Desired Username" 
        value="<?php echo isset($username)? $username : '' ?>"
        autocomplete="on">
        <p><?php echo isset($error['username']) ? $error['username'] : '' ?></p>
    </div>

那么您就可以使用

public static class EnumExtensions
{
  public static string Translate(this MainKeys key)
  {
    return MultiLanguage.MultiLangToolkit.GetTranslate(key);  
  }
}
本文链接:https://www.f2er.com/2558594.html

大家都在问