4
votes

Méthode principale Xamarin ou équivalent

Je suis nouveau sur Xamarin et je recherche un point d'entrée comme une méthode main () . De plus, j'ai une classe de stockage de données (c'est-à-dire modèle), qui reçoit constamment des données d'une socket Web et doit être accessible depuis toute l'application (c'est-à-dire à partir de plusieurs ViewModels). Où puis-je mettre des classes importantes et centrales comme celles-ci? Souhaitez-vous les mettre dans une classe statique?

Aussi: y a-t-il quelque chose comme une boucle principale qui est responsable de la gestion des tâches et des événements?

Je serais très reconnaissant pour une présentation générique / préliminaire de tous les "points d'entrée" dans une application Xamarin.


0 commentaires

4 Réponses :


3
votes

Si, par exemple, vous créez une application mobile multiplateforme dans Visual Studio 2017, vous obtiendrez déjà un échafaudage. La couche de données se trouve dans le dossier "Services".

Je considérerais le fichier "App.xaml" comme votre point d'entrée.

   public partial class App : Application
{
    //TODO: Replace with *.azurewebsites.net url after deploying backend to Azure
    public static string AzureBackendUrl = "http://localhost:5000";
    public static bool UseMockDataStore = false;
    public static bool UseEntityFramework = true;

    public App()
    {
        InitializeComponent();

        if (UseMockDataStore)
            DependencyService.Register<MockDataStore>();
        else if (UseEntityFramework)
            DependencyService.Register<SqLiteDataStore>();
        else
            DependencyService.Register<AzureDataStore>();

        MainPage = new MainPage();
    }

    protected override void OnStart()
    {
        // Handle when your app starts
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
    }
}


2 commentaires

Ouais, j'ai déjà pensé à mettre des choses dans le fichier App.xaml . Je l'ai trouvé un peu "caché", tho. J'ai lu sur l'aspect classe partielle d'être utile. Puis-je utiliser ça?


Le fichier "App.xaml" se trouve à la racine de votre projet, vous pouvez donc le trouver facilement. "Partiel" signifie qu'il complète la classe App déjà existante dans le projet UWP . Vous pouvez même créer votre propre "application de classe partielle publique" dans un fichier séparé, mais cela la compliquerait inutilement. J'essaierais d'abord de configurer votre source de données dans le dossier "Services".



4
votes

Chaque plate-forme a ses propres méthodes similaires à main ()

  • Android : MainActivity.OnCreate()
  • iOS : AppDelegate.FinishedLaunching (application UIApplication, options NSDictionary)
  • UWP : App.OnLaunched (LaunchActivatedEventArgs e)

sur les applications Xamarin.Forms, toutes ces plates-formes instancient la classe App et définit la MainPage .

Vous devez utiliser la méthode App.OnStart () si vous voulez faire pour BL.


3 commentaires

Merci beaucoup, mais BL?


sa couche métier


Cela m'a surpris que la classe App dans l'espace de noms UWP (et le projet) est différente de la classe App dans l'espace de noms Forms partagé (et le projet). J'avais assimilé les deux dans mon esprit et devenais très confus quant à ce qui a été créé en premier.



1
votes

En supposant que vous parlez de Xamarin.Forms ,

Je suis nouveau sur Xamarin et je recherche un point d'entrée comme une méthode main ().

  • Maintenant, le fonctionnement de Xamarin.Forms est que les classes natives respectives, c'est-à-dire MainActivity (Android), AppDelegate (iOS) et le < code> App (UWP) appelle la classe App.Xaml dans le projet .Net Standard ou PCL . Cela pourrait donc être considéré comme un point d'entrée, tout comme votre méthode main () d'une application console.

J'ai une classe de stockage de données (c'est-à-dire model), qui reçoit constamment des données d'une socket Web et doit être accessible depuis toute l'application (c'est-à-dire depuis plusieurs ViewModels).

  • Pour cela, le meilleur moyen de le gérer est un Base de données SQLite Je vous suggère également de vérifier this pour une meilleure compréhension de son fonctionnement

Où puis-je placer des classes importantes et centrales comme celles-ci? Souhaitez-vous les mettre dans une classe statique?

  • Vous pouvez les rendre statiques, mais je vous conseillerais personnellement de ne placer le code redondant que comme statique. Et oui, n'hésitez pas à créer des classes d'assistance statiques.

Aussi: y a-t-il quelque chose comme une boucle principale qui est responsable de la gestion des tâches et des événements?

  • Cette partie de votre question n'est pas claire pour moi, veuillez en préciser un peu plus

N'hésitez pas à revenir en arrière en cas de requêtes.


0 commentaires

0
votes

Sous Android, vous pouvez remplacer la MainActivity par défaut comme ci-dessous:

 entrez la description de l'image ici


0 commentaires