xamarin.forms - How can I create an instance of a class used for data management in a Xamarin application? -


here way doing now:

public partial class app : application {     public static datamanager db;      public app()     {         db.appupdated = "feb 1, 2017";         db.appversion = "0.1";         initializecomponent();         mainpage = ..     }      public static datamanager db     {                 {             if (db == null)             {                 db = new datamanager();             }             return db;         }     }       protected override void onstart()     {         app.db.initdata();     } } 

what know there better ways start singleton instance of class in xamarin application?

answer

as app grows, if keep adding static properties app class, app become cluttered , unmanageable.

i recommend implementing singleton pattern directly in datamanager class.

implement singleton pattern in datamanager.cs

public class datamanager {     static readonly lazy<datamanager> _instanceholder =                  new lazy<datamanager>(() => new datamanager());      ...      //private constructor prevent multiple instances of datamanager     private datamanager()     {         ...     }      public static datamanager instance => _instanceholder.value;      ... }  public partial class app : application {     public app()     {         datamanager.instance.appupdated = "feb 1, 2017";         datamanager.instance.appversion = "0.1";         initializecomponent();         mainpage = ..     }      protected override void onstart()     {         datamanager.instance.initdata();     } } 

sample app

i've implemented singleton pattern in sample xamarin.forms app: https://github.com/brminnick/xamconverter

for example, class uses singleton pattern: https://github.com/brminnick/xamconverter/blob/master/source/xamconverter/models/unitsofmeasurement/celsius.cs

and viewmodel utilizes singleton: https://github.com/brminnick/xamconverter/blob/master/source/xamconverter/viewmodels/conversionviewmodel.cs


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -