Tag: dry

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

我有一些关于如何在库中提供相同function的同步和异步实现的问题。 我先问他们然后提供下面的示例代码(实际上相当多,但事实上它很简单)。 有没有办法避免违反DRY原则? 考虑JsonStreamReader.Read , JsonStreamWriter.Write , JsonStreamWriter.Flush , ProtocolMessenger.Send , ProtocolMessenger.Receive及其异步版本的实现。 在对同一方法的同步和异步版本进行unit testing时,是否存在避免违反DRY原则的方法? 我正在使用NUnit,虽然我猜所有框架在这方面应该是相同的。 应该如何实现一个返回Task或Task考虑ComplexClass.Send和ComplexClass.Receive的Take 1和Take 2变体? 哪一个是正确的,为什么? 考虑到不知道库将在何处使用(控制台应用程序,Windows窗体,WPF,ASP.NET),在库中await之后总是包含.ConfigureAwait(false)是否正确? 以下是我在第一个问题中提到的代码。 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; […]