如何轻松支持重复的异步/同步方法?

Sho*_*hoe 7 c# entity-framework async-await

实体框架具有相同的IO绑定方法的同步和异步版本,例如SaveChangesSaveChangesAsync.如何在不"复制"代码的情况下创建最少完成相同任务的新方法?

public bool SaveChanges()
{
    //Common code calling synchronous methods
    context.Find(...);

    //Synchronous Save
    return context.SaveChanges();
}

public async Task<bool> SaveChangesAsync()
{
    //Common code asynchronous methods
    await context.FindAsync(...);    

    //Asynchronous Save
    return await context.SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 6

你不能 - 至少,不明智.同步和异步实现从根本上是不同的.您可以通过"同步异步"和"异步过同步" 来伪装它,但这两种都是反模式,应该避免.