Refactoring einer Methode, die ein iAyncenumerable zurückgibt

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Refactoring einer Methode, die ein iAyncenumerable zurückgibt

by Anonymous » 26 Aug 2025, 12:01

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.

Top