Ich habe eine Schnittstelle, die so geschrieben ist:
public interface IItemRetriever
{
public IAsyncEnumerable<string> GetItemsAsync();
}
Ich möchte eine leere Implementierung schreiben, die kein Element zurückgibt, wie folgt:
public class EmptyItemRetriever : IItemRetriever
{
public IAsyncEnumerable<string> GetItemsAsync()
{
// What do I put here if nothing is to be done?
}
}
Wenn es eine einfache IEnumerable wäre return Enumerable.Empty<string>();
, würde ich , aber ich habe keine gefunden AsyncEnumerable.Empty<string>()
.
Problemumgehungen
Ich fand das, was funktioniert, aber ziemlich seltsam ist:
public async IAsyncEnumerable<string> GetItemsAsync()
{
await Task.CompletedTask;
yield break;
}
Irgendeine Idee?
c#
c#-8.0
iasyncenumerable
cube45
quelle
quelle
System.Linq.Async
als "praktisch Teil des Frameworks" betrachten. Es gibt sehr wenig, was nur in netstandard2.1 zu finden ist, wenn es darum gehtIAsyncEnumerable<T>
.Wenn Sie das in Jons Antwort erwähnte Paket aus irgendeinem Grund nicht installieren möchten, können Sie die folgende Methode erstellen
AsyncEnumerable.Empty<T>()
:Hinweis: Die Antwort entmutigt Sie nicht, das
System.Linq.Async
Paket zu verwenden. Diese Antwort enthält eine kurze ImplementierungAsyncEnumerable.Empty<T>()
für Fälle, in denen Sie sie benötigen und das Paket nicht verwenden können / möchten. Die im Paket verwendete Implementierung finden Sie hier .quelle