Streamlining C# Retry Logic dengan Ekspresi Lambda
Dalam C#, operasi semula adalah tugas yang sama. Kaedah tradisional sering melibatkan gelung semula yang jelas, yang membawa kepada kod yang tidak dapat diguna semula dan kurang boleh diguna semula. Ekspresi Lambda menawarkan penyelesaian yang lebih elegan.Contoh ini menunjukkan pembalut semula semula berasaskan Lambda yang boleh diguna semula:
<code class="language-csharp">public static class RetryHelper { public static void Execute(Action action, TimeSpan retryInterval, int maxAttempts = 3) { Execute(() => { action(); return null; }, retryInterval, maxAttempts); } public static T Execute<T>(Func<T> action, TimeSpan retryInterval, int maxAttempts = 3) { var exceptions = new List<Exception>(); for (int attempt = 0; attempt < maxAttempts; attempt++) { try { return action(); } catch (Exception ex) { exceptions.Add(ex); if (attempt < maxAttempts - 1) { Thread.Sleep(retryInterval); } } } throw new AggregateException("Retry attempts failed.", exceptions); } }</code>
ini merangkumi logik semula. Anda memberikan tindakan (atau fungsi) untuk mencuba semula, selang semula, dan bilangan percubaan maksimum. RetryHelper
<code class="language-csharp">RetryHelper.Execute(() => SomeMethodThatMightFail(), TimeSpan.FromSeconds(2)); </code>
<code class="language-csharp">int result = RetryHelper.Execute(() => SomeMethodReturningInt(), TimeSpan.FromMilliseconds(500), 5);</code>
Atas ialah kandungan terperinci Bagaimanakah ekspresi Lambda dapat memudahkan logik semula dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!