【发布时间】:2020-02-03 14:43:33
【问题描述】:
我想创建一个字符串的“字典”,但是我只学习过如何使用字符串来引用字典中我想要的内容。我想要更自动更正的东西(因为拼写错误可能发生在大字符串表中),这就是我想知道如何硬编码的原因。 (字符串的值将从文本文件中检索,例如 JSON)。
我注意到微软在他们的字符串资源文件中使用了某种类型的硬编码。
所以不要这样做:
string result = strings["Hello"];
我希望这样做:
string result = strings.Hello;
我唯一能想到的就是使用一些外部工具来创建一个枚举/结构脚本,其中包含来自文本文件的值。有没有更好的选择,也许是 .NET 内置的?
编辑:我认为“强类型”比“硬编码”更好。
编辑 2:感谢所有 cmets 和答案。看起来,需要一些代码生成来实现这个结果。我想知道是否已经有任何工具可以为您执行此操作(我尝试查找,但可能缺少我的术语)。创建这个工具似乎并不难。
【问题讨论】:
-
您可以使用 T4 模板吗?我过去已经这样做了,并且效果很好,只要您记得适当地重新生成它们
-
如果你想要完整的智能感知,你必须编码生成一些静态类,正如@canton7 所建议的那样。如果您愿意放弃智能感知,可以尝试ExpandoObject。
-
有通用的只读集合:docs.microsoft.com/en-us/dotnet/api/… |不会有编译时常量/Enums的性能优势,但至少使用代码是无法改变的。
-
你看过资源文件背后的代码吗?每个键都有一个属性。
-
@RubensFarias:我假设 OP 不想即时编译和加载这些东西,因为他写了
string result = strings.Hello;否则,或多或少是Assembly.LoadFrom
标签: c# .net localization hardcode