Архитектура Elm (MVU) в C# и Deep Copy
Я изучаю возможность реализации шаблона MVU в приложении Xamarin с использованием C#. Это в основном, похоже, зависит от неизменности модели, предоставляемой представлению иUpdate
функция, которая будет продолжать создавать новую модель всякий раз, когда ее необходимо изменить.
Возможно ли в C# правильно достичь этого без реализации какой-то глубокой копии, если модель может содержать ссылочные типы?
Я знаю, что для этого в F# существуют такие фреймворки, как Fabulous, но я просто пытаюсь понять, означает ли отсутствие поддержки неизменяемости в C# то, что невозможно реализовать чистую форму MVU, не прибегая к реализации какого-то глубокого операция копирования?
3 ответа
Comet , вероятно, та библиотека, которую вы ищете. Он также станет основой шаблона MVU, который будет поддерживать MAUI, о котором упоминал @sevenate.
Похоже, что Microsoft скоро ответит на эти вопросы в своей предстоящей платформе Multi-Platform App UI (MAUI):
readonly State<int> count = 0;
[Body]
View body() => new StackLayout
{
new Label("Welcome to .NET MAUI!"),
new Button(
() => $"You clicked {count} times.",
() => count.Value ++)
)
};
Больше информации:
Есть библиотека для выполнения полного MVU на C # с Xamarin.Forms: https://github.com/shirshov/laconic (я автор)