Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A .NET 10 bevezeti az AsyncEnumerable osztályt, amely a linq kiterjesztési metódusok teljes készletét biztosítja a IAsyncEnumerable<T> típushoz. Ez az osztály lecseréli a közösség által fenntartott System.Linq.Async
NuGet-könyvtárat, ami kétértelműségek miatt fordítási hibákat okozhat.
Bevezetett verzió
.NET 10 Előzetes verzió 1
Előző viselkedés
A AsyncEnumerable
System.Linq.Async
osztálya LINQ-támogatást nyújtott a számára.
Új viselkedés
A AsyncEnumerable osztály a .NET 10-ban és a System.Linq.AsyncEnumerable
NuGet csomag LINQ-támogatást biztosít a IAsyncEnumerable<T> számára.
A kompatibilitástörő változás típusa
Ez forrás nem kompatibilis módosítással.
A változás oka
IAsyncEnumerable<T> egy gyakran használt felület, ezért a platformnak linq-támogatást kell nyújtania a típushoz.
System.Linq.Async
fenntartói és a közösség más tagjai petíciót nyújtottak be a platformba való közvetlen felvételért.
Javasolt művelet
Ha .NET 10-re frissít, és a kód tartalmaz egy közvetlen System.Linq.Async
csomaghivatkozást, távolítsa el azt. A .NET 10 és az előző verziók egyszerre történő célzása érdekében, ehelyett adjon hozzá egy csomaghivatkozást System.Linq.AsyncEnumerable
.
Ha a System.Linq.Async
közvetetten egy másik csomagon keresztül használják fel, kerülje a kétértelmű hibákat azáltal, hogy ezt beilleszti a projektbe.
<PackageReference Include="System.Linq.Async" Version="6.0.1">
<ExcludeAssets>all</ExcludeAssets>
</PackageReference>
A legtöbb fogyasztó kódnak módosítások nélkül kompatibilisnek kell lennie, de egyes híváswebhelyeknek frissítésekre lehet szükségük az újabb nevekre és aláírásokra való hivatkozáshoz. A például Select
módon indított e.Select(i => i * 2)
hívások ugyanúgy működnek előtte és utána is. A hívást e.SelectAwait(async (int i, CancellationToken ct) => i * 2)
azonban úgy kell módosítani, hogy Select
ahelyett, hogy SelectAwait
használjon, mint e.Select(async (int i, CancellationToken ct) => i * 2)
esetében.
Tekintse meg a System.Linq.AsyncEnumerable API dokumentációját a rendelkezésre álló LINQ-bővítménymódszerek teljes készletéhez IAsyncEnumerable<T>.
Érintett API-k
- System.Linq.AsyncEnumerable
- System.Collections.Generic.IAsyncEnumerable<T>
- System.Linq.Async csomag (közösségi fenntartású)