Создание классов ViewModels и Service

Я попытался понять, как создаются классы ViewModels и Service, и записал их для других. Пожалуйста, исправьте / дополнения, где это необходимо.

Создание экземпляров ViewModels и Services не выполняется самым распространенным способом. Это'сделано с помощью отражения.

В TipCalc у вас есть:

public class FirstViewModel : MvxViewModel
{
    private readonly ICalculationService _calculationService;

    public FirstViewModel(ICalculationService calculationService)
    {
        _calculationService = calculationService;
    }
...
}

а также

public class App : Cirrious.MvvmCross.ViewModels.MvxApplication
{
    public override void Initialize()
    {
        CreatableTypes()
         .EndingWith("Service")
         .AsInterfaces()
         .RegisterAsLazySingleton();
    ...
    }
}

Во время Initialize () интерфейсы и классы, разработанные как Service (имя оканчивается на Service), объединяются с использованием отражения и имен интерфейсов и имен классов (IPersonService и PersonService). Позже это используется для обратного поиска экземпляра класса (таблица поиска содержит ленивые ссылки на одноэлементные экземпляры классов служб. Службы создаются при нулевом значении).

public FirstViewModel (ICalculationService computingService) ссылается на экземпляр CalculationService. Это делается с помощью таблицы поиска, созданной ранее.

Реализация ViewModels осуществляется через инфраструктуру Mvx. Когда MvxFramework это 'спросил» для экземпляра ViewModel он будет отражать ViewModel и определять, какие конструкторы есть в этом классе. Если там's конструктор без параметров, то он будет использоваться. Если имеется конструктор с параметром, а параметр является интерфейсом класса службы, то в качестве параметра будет использоваться (одиночный) экземпляр этой службы.

Услуги создаются аналогичным образом; их конструкторы отражены и параметры созданы (синглтон). И так далее.

Ответы на вопрос(1)

Ваш ответ на вопрос