C# 无法等待通用列表

C# 无法等待通用列表,c#,asp.net-mvc,asynchronous,C#,Asp.net Mvc,Asynchronous,我有一个接口来生成服务,以生成异步actionresult 下面是接口和类的代码 public interface Ienter { List<Page> AddPages(string path, Book book); } public class enternew :Ienter { private graduationEntities db = new graduationEntities(); List<Page> te

我有一个接口来生成服务,以生成异步actionresult 下面是接口和类的代码

       public interface Ienter
{
   List<Page> AddPages(string path, Book book);
}


public class enternew :Ienter
{

    private graduationEntities db = new graduationEntities();
    List<Page> temp = new List<Page>();


    public List<Page> AddPages(string path, Book book)
    {
        ///////////
        return temp;
    }
} 
公共接口客户端
{
列表添加页面(字符串路径、书本);
}
公共类企业新名称:Ienter
{
private GraducationEntities db=新的GraducationEntities();
列表温度=新列表();
公共列表添加页面(字符串路径、书本)
{
///////////
返回温度;
}
} 
这是控制器

     public class BookController : Controller
    {
    Ienter _ienter ;
    public BookController (Ienter ienter)
    {
        this._ienter = ienter ;
    }
      [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult>  Create([Bind(Include = "ID,Name,Url,CategoryID")] Book book)
    {
        var file = Request.Files[0];
        string path = "";
        var fileName = System.IO.Path.GetFileName(file.FileName);
        path = System.IO.Path.Combine(Server.MapPath("~/PDF/"), fileName);
        file.SaveAs(path);
        book.Url = path;
        List<Page> pages = new List<Page>();
        pages = await this._ienter.AddPages(path,book);
        return View(book);
    }
公共类BookController:控制器
{
Ienter_Ienter;
公共图书管理员(Ienter-Ienter)
{
这个。_ienter=ienter;
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(Include=“ID,Name,Url,CategoryID”)]Book)
{
var file=Request.Files[0];
字符串路径=”;
var fileName=System.IO.Path.GetFileName(file.fileName);
path=System.IO.path.Combine(Server.MapPath(“~/PDF/”),文件名);
file.SaveAs(路径);
Url=path;
列表页=新列表();
pages=等待此操作。\u ienter.AddPages(路径、书本);
返回视图(书);
}

在wait时,编译器告诉我不能等待,因为它返回泛型集合

假设您不能更改接口的签名,您可以将对实现的调用包装在
任务中。运行

pages = await Task.Run(() => this._ienter.AddPages(path, book));
这将使用匿名委托来调用您的方法


一个更重要的问题是,您认为等待
AddPages
方法会给您带来什么好处?仅仅因为async/wait是新的热点并不意味着所有的好处都来自于改装。

为什么您希望能够等待
AddPages
方法?它不是一个异步方法。请更改您的界面e包括
任务添加页(…)
并使实现遵循这一点。有一个很长的代码可以将许多页面添加到此列表中,它不能是同步的,因此我可以同时添加两本书和它们的页面thnx sir,以帮助mesir。我有另一个问题,即在控制器的构造函数中没有参数,我将其定义为依赖注入mak那么你能帮我吗?有一个方法可以接受params的书籍集合,这不是更有意义吗?大多数ORMs(假设你正在使用一个)具有批量添加/删除方法。例如,实体框架具有AddRange和RemoveRange函数-因为操作的最长部分往往是建立连接,批量插入等,因此速度往往更快。对于您的最后评论-您需要问另一个问题-DI与您当前的问题无关。