Page 1 of 1

Refactoring einer Methode, die ein iAyncenumerable zurückgibt

Posted: 26 Aug 2025, 12:01
by Anonymous
Ist es möglich, eine Methode, die iAsyncenumerable ?

Code: Select all

public async IAsyncEnumerable GetFoosFromFile(string filename)
{
using (FileStream fs = File.OpenRead(filename))
{
var items = JsonSerializer.DeserializeAsyncEnumerable(fs);
await foreach (var item in items)
{
yield return item;
}
}
}

public async IAsyncEnumerable GetFoosFromString(string inputString)
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(inputString ?? "")))
{
var items = JsonSerializer.DeserializeAsyncEnumerable(ms);
await foreach (var item in items)
{
yield return item;
}
}
}
Ist es möglich, alles in der Verwendung von nach seiner eigenen Methode neu zu gestalten? So etwas

Code: Select all

public async IAsyncEnumerable GetFoosFromFile(string filename)
{
using (FileStream fs = File.OpenRead(filename))
{
yield return GetFoosFromStream(fs);
}
}

public async IAsyncEnumerable GetFoosFromString(string inputString)
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(inputString ?? "")))
{
yield return GetFoosFromStream(ms);
}
}

private async IAsyncEnumerable GetFoosFromStream(Stream inputStream)
{
var items = JsonSerializer.DeserializeAsyncEnumerable(ms);
await foreach (var item in items)
{
yield return item;
}
}
Ich konnte den Compiler hier nicht glücklich machen, und soweit ich die Wechselwirkung zwischen Ertrag erwarte ist im Grunde genommen unmöglich. Es gibt überhaupt keine Chance, alles im Gedächtnis zu halten. Daher der DeserializeAsyncenumerable in erster Linie.