Saya memiliki antarmuka yang ditulis seperti ini:
public interface IItemRetriever
{
public IAsyncEnumerable<string> GetItemsAsync();
}
Saya ingin menulis implementasi kosong yang tidak mengembalikan item, seperti:
public class EmptyItemRetriever : IItemRetriever
{
public IAsyncEnumerable<string> GetItemsAsync()
{
// What do I put here if nothing is to be done?
}
}
Jika itu adalah IEnumerable biasa, saya akan melakukannya return Enumerable.Empty<string>();
, tetapi saya tidak menemukannya AsyncEnumerable.Empty<string>()
.
Penanganan masalah
Saya menemukan ini yang berfungsi tetapi cukup aneh:
public async IAsyncEnumerable<string> GetItemsAsync()
{
await Task.CompletedTask;
yield break;
}
Ada ide?
c#
c#-8.0
iasyncenumerable
kubus45
sumber
sumber
System.Linq.Async
"hampir bagian dari kerangka kerja". Ada sangat sedikit yang hanya di netstandard2.1 ketika datang keIAsyncEnumerable<T>
.Jika karena alasan apa pun Anda tidak ingin menginstal paket yang disebutkan dalam jawaban Jon, Anda dapat membuat metode
AsyncEnumerable.Empty<T>()
seperti ini:Catatan: Jawabannya tidak mengecilkan hati menggunakan
System.Linq.Async
paket. Jawaban ini memberikan implementasi singkatAsyncEnumerable.Empty<T>()
untuk kasus-kasus yang Anda butuhkan dan Anda tidak bisa / tidak ingin menggunakan paket. Anda dapat menemukan implementasi yang digunakan dalam paket di sini .sumber