C#调用Gmail API获取用户签名块报Func无SendAs定义错误
问题诱因
报错是VB.NET和C#的语法规则差异直接导致的:
- VB.NET允许省略方法调用的括号,你原先可正常运行的VB代码里写
.Execute时,编译器会自动识别为方法调用,执行后返回Gmail API响应的ListSendAsResponse对象 - C#中方法必须携带括号
()才会触发执行,你当前C#代码里只写了.Execute没有加括号,这行代码根本没有发起API请求,只是把Execute方法本身(类型为Func<ListSendAsResponse>的委托)赋值给了result变量。委托类型自然不存在SendAs属性,就会抛出你看到的错误。
修复方案
只需要修正API执行那行代码的写法即可。由于你当前的方法是异步方法,推荐搭配await使用异步执行方法,避免阻塞调用线程:
将原有错误代码:
var result = svc.Users.Settings.SendAs.List("me").Execute;
替换为:
var result = await svc.Users.Settings.SendAs.List("me").ExecuteAsync();
如果你需要使用同步执行逻辑,也可以直接给Execute补上调用括号:
var result = svc.Users.Settings.SendAs.List("me").Execute();
修正后result会被正确赋值为API返回的响应对象,就可以正常访问SendAs属性遍历别名列表了。
内容的提问来源于stack exchange,提问作者Shane Brodie
相关产品推荐
相关产品推荐

