.NET中使用Amazon Translate正式性设置触发NullReferenceException
解决Amazon Translate .NET SDK中设置正式性时的NullReferenceException异常
问题根源
TranslateTextRequest的Settings属性默认未实例化(值为null),直接访问其Formality或Profanity属性会触发空引用异常。
正确实现代码
必须先实例化TranslationSettings对象,再为其属性赋值:
using (var client = new AmazonTranslateClient(awsCredentials, selectedRegion)) { var request = new Amazon.Translate.Model.TranslateTextRequest(); request.Text = toTranslate; request.SourceLanguageCode = sourceLanguage; request.TargetLanguageCode = translateLanguage; // 先实例化Settings对象,再设置正式性 request.Settings = new Amazon.Translate.Model.TranslationSettings(); request.Settings.Formality = "FORMAL"; // 可选值:"FORMAL" 或 "INFORMAL" var response = client.TranslateTextAsync(request).GetAwaiter().GetResult(); // 如需查看服务实际应用的设置,可读取response.AppliedSettings,无需手动赋值 var appliedFormality = response.AppliedSettings?.Formality; }
关于response.AppliedSettings的说明
AppliedSettings是AWS服务返回的只读属性,用于告知你本次翻译实际应用的设置,不能手动赋值。如果服务未返回相关设置(比如目标语言不支持正式性定制),该属性可能为null,建议使用空值运算符?.安全访问。
额外注意
确保你指定的目标语言支持正式性设置(如荷兰语、韩语、墨西哥西班牙语等),否则该设置会被忽略,但不会触发异常。
内容的提问来源于stack exchange,提问作者Thor2020
相关产品推荐
相关产品推荐

