Megosztás a következőn keresztül:


System.Linq.AsyncEnumerable a .NET 10-ben

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 AsyncEnumerableSystem.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.

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