相关疑难解决方法(0)

使用异步等待实现具有同步和异步API的库以实现相同的功能

我有一些关于如何在库中提供相同功能的同步和异步实现的问题.我先问他们然后提供下面的示例代码(实际上相当多,但事实上它很简单).

  1. 有没有办法避免违反DRY原则?考虑的实现JsonStreamReader.Read,JsonStreamWriter.Write,JsonStreamWriter.Flush,ProtocolMessenger.Send,ProtocolMessenger.Receive和他们的异步版本.

  2. 在对同一方法的同步和异步版本进行单元测试时,是否有办法避免违反DRY原则?我正在使用NUnit,虽然我猜所有框架在这方面应该是相同的.

  3. 应该如何实施的方法返回TaskTask<Something>考虑Take 1Take 2变体ComplexClass.SendComplexClass.Receive?哪一个是正确的,为什么?

  4. 考虑到不知道库将在何处使用(控制台应用程序,Windows窗体,WPF,ASP.NET),总是在库中包含.ConfigureAwait(false)后是否正确await

以下是我在第一个问题中提到的代码.

IWriter并且JsonStreamWriter:

public interface IWriter
{
    void Write(object obj);
    Task WriteAsync(object obj);
    void Flush();
    Task FlushAsync();
}

public class JsonStreamWriter : IWriter
{
    private readonly Stream _stream;

    public JsonStreamWriter(Stream stream)
    {
        _stream = stream;
    }

    public void Write(object obj)
    {
        string json = JsonConvert.SerializeObject(obj); …
Run Code Online (Sandbox Code Playgroud)

.net c# dry async-await

10
推荐指数
2
解决办法
870
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

dry ×1