alexey_rom: (Default)
[personal profile] alexey_rom
Bart de Smet пишет о новой Reactive Framework, которая войдёт в .NET 4.0 (очень интересная и полезная библиотека, кстати; и многие идеи взяты опять-таки из ФП, а точнее из Functional Reactive Programming).

В своём последнем посте он упомянул комбинатор Using, служащий для выделения ресурса и его освобождения после завершения работы с последовательностью. Как известно, в .NET все ресурсы, которые нужно освобождать, должны реализовать интерфейс IDisposable. В первой версии поста была приведена сигнатура

public static IEnumerable<TSource> Using<TSource>(Func<IDisposable> resourceSelector, Func<IDisposable, IEnumerable<TSource>> resourceUsage);

и пример использования

EnumerableEx.Using<int>(() => new ActionDisposable(() => Console.WriteLine("Gone")), a =>
{
    // Now we could be using a to get data back...
    Console.WriteLine(a is ActionDisposable);
    // ... but let's just return some stock data.
    return new[] { 1, 2, 3 };
})
.Run(Console.WriteLine);


Я заметил, что практически при любом использовании этого метода пришлось бы в resourceUsage приводить тип ресурса, и предложил заменить сигнатуру на

public static IEnumerable<TSource, TResource> Using<TSource>(Func<TResource> resourceSelector, Func<TResource, IEnumerable<TSource>> resourceUsage) where TResource : IDisposable;

Вот только оказалось, что в последней версии это изменение уже сделали.
This account has disabled anonymous posting.
(will be screened)
(will be screened)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

Profile

alexey_rom: (Default)
alexey_rom

April 2012

S M T W T F S
1 234567
89 1011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 2nd, 2025 12:18 am
Powered by Dreamwidth Studios