我拥有财产性本地化的自定义枚举属性
public MyEnumType MyType {get; set;}
其中MyEnumType是
public enum MyEnumType
{
One = 1,
Two = 2,
Three = 3,
}
是有可能本地化的MyType财产无MyEnumType
我拥有财产性本地化的自定义枚举属性
public MyEnumType MyType {get; set;}
其中MyEnumType是
public enum MyEnumType
{
One = 1,
Two = 2,
Three = 3,
}
是有可能本地化的MyType财产无MyEnumType
修改它不是。这并不意味着。这不是输出文本,它们在程序名称中。
这不是本地化(翻译输出),你会做的是翻译源代码中的类名称。
本地化您可以使用通常的本地化框架进行的输出。取决于输出技术。
您可以使用扩展方法创建自己的ToString()而不更改枚举本身。
using System;
namespace ConsoleApplication1 {
public enum MyEnumType {
One = 1,
Two = 2,
Three = 3,
}
public static class Extension {
public static string ToLocalizedString(this MyEnumType type) {
// check System.Threading.Thread.CurrentThread.CurrentCulture
// if you need current culture context
switch (type) {
case MyEnumType.One:
return "Ein";
case MyEnumType.Two:
return "Zwei";
case MyEnumType.Three:
return "Drei";
default:
throw new NotImplementedException();
}
}
}
class Program {
static void Main(string[] args) {
var foo = MyEnumType.One;
Console.Out.WriteLine(foo.ToLocalizedString());
}
}
}
我在使用mvc @ Html.DropDownListFor(x => x.MyType.ToLocalizedString(),...时出错,错误消息:模板只能用于字段访问,属性访问,单维数组索引,或单参数自定义索引器表达式。 – user1765862
如果你需要“本地化”“的ToString”的转换,你可以去一个静态类
public static class Localization
{
public static string ToCultureString(this MyEnumType type)
{
return ResourceManager.GetString(type.ToString(), Culture);
}
}
的静态方法!请照顾:
RCE文件的文化需要,你在哪里使用您的枚举定义键的资源文件
进一步您可以使用下面的代码:
var asString = MyObj.MyType.ToCultureString();
你是什么意思的“本地化”? – Tigran
什么是'MoneyTransactionType'?并本地化什么?哪里?你如何使用它?在哪个控件中? Win/Wpf/Web? –
您可以使用['DisplayAttribute'](http://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.displayattribute.aspx)并编写自定义代码来访问它们,也可以编写自定义代码根据枚举值的名称进行查找。 – Stijn