Ludzie tu pisali, że language-ext
za trudne, nikt tego nie będzie używał, po co to komu itd. No to może: https://github.com/vkhorikov/CSharpFunctionalExtensions w zamian? :) Za radą @somekind każdy sobie pisze jakieś Resulty
zamiast spamować wyjątkami, więc czemu by nie użyć gotowego rozwiązania, które w dodatku sporo oferuje i jest jednocześnie proste w obsłudze? Taki przykład z Readme:
return _customerRepository.GetById(id)
.ToResult("Customer with such Id is not found: " + id)
.Ensure(customer => customer.CanBePromoted(), "The customer has the highest status possible")
.Tap(customer => customer.Promote())
.Tap(customer => _emailGateway.SendPromotionNotification(customer.PrimaryEmail, customer.Status))
.Finally(result => result.IsSuccess ? Ok() : Error(result.Error));