Архитектура 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 (я автор)

Другие вопросы по тегам