我不理解IStringLocalizer中的一件事。假设我有一个端点,它返回状态代码200和一些本地化字符串。
public async Task<IActionResult> Test()
{
return Ok(localizer["Localized Text"])
}
如果我这样做,我将收到一个对象,其中包含有关该定位器的一些信息
{
"name": "Localized Text",
"value": "Localized Text translated",
"resourceNotFound": false,
"searchedLocalization": "MyApi.Translations"
}
为了成为返回翻译文本的字符串,我需要添加.Value
public async Task<IActionResult> Test()
{
return Ok(localizer["Localized Text"].Value)
}
(这只返回"本地化文本翻译"(
但是如果我有一个类具有字符串属性
public class ResponseMessage {
public string Message {get; set;}
}
并且我将定位器分配给它的字符串属性,然后我不必添加.Value
来接收相应的翻译
public async Task<IActionResult> Test()
{
return Ok(new ResponseMessage {
Message = localizer["Localized Text"]
})
}
我想知道,在文档中,这种行为是在哪里描述的。因为现在它看起来像一个魔术。
IStringLocalizer
索引器返回LocalizedString
的一个实例,这是在第一个示例中直接返回时序列化的实例。
对于其他场景,LocalizedString
通过其隐式转换运算符隐式转换为字符串。我假设隐式转换运算符只是返回LocalizedString
值。
您可以查看"用户定义的转换运算符"页面,以了解有关隐式转换的更多信息。