Exemplo de Xamarin.Forms com Microsoft Extensions
Vamos ao Nuget Instalar o Microsoft Extensions em todos os projetos.
Vamos instalar em todos os projetos:
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Logging
Em Seguida precisamos criar como embedded resource o arquivo appsettings.json
Então criamos a classe Startup.cs como se estivessemos utilizando uma aplicação asp.net core. o Nome Startup é apenas como sugestão sendo que pode ser utilizado qualquer nome para a classe. O Conteudo deve simular a configuração de Inicio do Asp.net core, subindo os serviços de injeção de Dependencia , log e etc.
Inclusive graças ao HostingEnvironment podemos utilizar logicas em Desenvolvimento e produção de forma separada.
Devemos Alterar o App.xaml.cs para entender a injeção de Dependencia e chamada da pagina inicial :
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinFormsMSExtensions
{
public partial class App : Application
{
public static IServiceProvider ServiceProvider { get; set; }
public App()
{
InitializeComponent();
MainPage = ServiceProvider.GetService<MainPage>();
}
}
}
No Caso das ViewModels podemos utilizar Uma Interface para Cada uma :
using System;
namespace XamarinFormsMSExtensions.ViewModels
{
public interface IMainViewModel
{
}
}
E Configurado nas Paginas Xaml :
using Xamarin.Forms;
using XamarinFormsMSExtensions.ViewModels;
namespace XamarinFormsMSExtensions
{
public partial class MainPage : ContentPage
{
public MainPage(IMainViewModel viewModel = null)
{
InitializeComponent();
BindingContext = viewModel;
}
protected override async void OnAppearing()
{
base.OnAppearing();
await ((MainViewModel)BindingContext).Carregar();
}
}
}
É Possivel injetar serviços igual a utilização do Asp.net core.
Um Exemplo completo da configuração esta disponivel nesse repositorio.
Caso queira um exemplo de utilização Pratica clique aqui