Pull to refresh
8
0
Александр @Magic_B

Программист .NET / Go

Send message
В C# 7.0 есть записи. Нет, не учитывается, если вы имеете ввиду «склейку» Tuple. Вообще, я выше говорил, что не стоит использовать такие громоздкие записи, где будет Item7 например, это понижает читаемость, хотя дает типизацию.
ссылка на репозиторий
Осталось сделать рабочий компилируемый пример и описать плюсы и минусы…
Кому интересна данная тема, милости просим!
Да, это просто Fluent! И он прекрасен!!!
Я не совсем понимаю, что Вы хотели увидеть… Разговор ведется в рамках императивного языка программирования C#, я использую лишь другую запись, и не собираюсь делать из C# F#…
Я и не говорю что это ФП, даже намека не делаю, но такой стиль написания на C# имеет место быть и может называться функциональным стилем.
Вы имеете ввиду, Tuple<T1,T2,T3>? Хоть пятерку… Но это не очень хорошо, использовать такие длинные записи для логики…
Extend — это функция создающая Tuple из входящего Tuple или одного типа, добавляя к нему еще один элемент. Например, есть Tuple<int, double>, тогда Extend(Tuple<int, double>, string) вернет Tuple<int, double, string>. В данном случае, моделью для вьюшки будет являться Tuple<Cart, Product>.
Могу в течении дня выложить на гит-хаб свою библиотеку и примеры использования. Выглядит код как-то так в итоге:
Action в MVC-контроллере добавления в корзину:
public IActionResult Add(string a, string b, string c, string d, int count = 1, int mod=0)
  => _dal.GetUrl(a, b, c, d).Convert(_dal.GetProduct)
     .IfNotNull(x => 
        _dal.AddProductToCart(_dal.GetCartBySession(HttpContext.Session.Id), x, count, mod)
     .Extend(x).Convert(PartialView), () => (IActionResult) NotFound());

Понажимайте «вверх», кого заинтересует раскрытие данной темы.
У меня уже два рабочих проекта в таком стиле сделано. Но есть два минуса такого подхода, могу позже объяснить что к чему…

Information

Rating
Does not participate
Location
Россия
Registered
Activity