我正在关注PluralSight的一个关于如何在.NET核心中开发一个fullstack项目的课程,并且有过无数的错误,这些错误让我和一些甜蜜的Google-fu帮助我理解(主要是由于VS版本的差异)。
然而,我刚刚遇到了一些......复杂的事情?我正在使用此方法的接口public interface IWorldRepository
{
async Task<bool> SaveChangesAsync(); // <-- error occurs here
}
中工作:
WorldRepository
使用此方法将类(public async Task<bool> SaveChangesAsync()
{
return (await _context.SaveChangesAsync()) > 0;
}
)与其接口:
{{1}}
根据我对.NET的经验,这应该可以正常工作,但由于某种原因,界面抱怨它,说:&#34;修饰符&#39; async&#39;对此商品无效。&#34;
我四处寻找错误并亲自找到了解释 的 Jon Skeet 即可。但是,我并不真正理解可能发生的事情以及为什么我的代码是错误的。
它不仅看起来很好,而且它似乎适用于在PluralSight上运行相同代码的教师。
如果有人能够对此有所了解,我将非常感激!
答案 0 :(得分:2)
您不能在接口定义中使用async
关键字。但是,它已正确放置在继承类定义中。
这是因为接口定义了结构(什么),而类定义了实现(如何)。将方法标记为async
允许在方法正文中使用await
关键字,但不会形成方法签名的一部分。
从您的界面中删除async
关键字将允许您的代码进行编译。
public interface IWorldRepository
{
Task<bool> SaveChangesAsync();
}
答案 1 :(得分:0)
我遇到了同样的问题,但是我回去观看了视频,注意到红色的波浪线从未离开教练的界面声明。我认为他只是没有回去修改视频。