如何在.resx资源文件中写入带{id}占位符的动态字符串?
解决RESX文件动态占位符不生效的问题
嘿,这个问题我之前踩过坑!直接把@"Error in {id}."这种写法丢进resx的Value字段确实不会生效,因为RESX资源系统默认不识别这种命名式的占位符,得用.NET标准的格式化语法来定义动态参数才行。下面给你具体的解决步骤和提示:
第一步:修改RESX中的Value内容
把原来的{id}替换成数字索引格式的占位符,比如{0}(如果只有一个参数的话),最终RESX里的Value应该写成:Error in {0}.这里的
{0}对应你调用时传入的第一个参数,要是有多个动态参数,就按顺序用{0}、{1}、{2}...依次排列。第二步:调用资源时传入参数
根据你使用的是强类型资源还是弱类型资源,调用方式略有不同:- 如果你启用了强类型资源(RESX文件的「自定义工具」设置为
PublicResXFileCodeGenerator),可以直接通过方法调用传参:// 假设你的RESX键名为ErrorWithId string errorMessage = Resources.ErrorWithId("your-id-value"); - 如果是弱类型资源,就用
string.Format来完成参数替换:string errorMessage = string.Format(Properties.Resources.ErrorWithId, "your-id-value");
- 如果你启用了强类型资源(RESX文件的「自定义工具」设置为
额外提示
不要尝试在RESX里用命名占位符(比如{id}),因为RESX本身只是存储原始字符串,不会自动解析这种命名格式,必须依赖.NET的String.Format机制,而这个机制默认只认数字索引的占位符。如果一定要用命名参数,你得自己封装一层逻辑(比如用第三方库或者自定义解析),但完全没必要,用标准的数字索引写法是最简洁可靠的方案。
内容的提问来源于stack exchange,提问作者Khaine775
相关产品推荐
相关产品推荐

