Пример #1
0
        public static void Initialize(App app)
        {
            if (!hasRunEarlyInit)
            {
                EarlyInitialize();
            }

            // Navigation
            var navigationHelper = new TinyNavigationHelper.Forms.FormsNavigationHelper(app);

            navigationHelper.RegisterViewsInAssembly(mainAsm);
            builder.RegisterInstance <INavigationHelper>(navigationHelper);

            // Platform specifics
            Platform?.Initialize(app, builder);

            // Build and set
            var container = builder.Build();
            var resolver  = new AutofacResolver(container);

            Resolver.SetResolver(resolver);

            // Init TinyMvvm
            TinyMvvm.Forms.TinyMvvm.Initialize();

            // Init TinyPubSub
            TinyPubSubLib.TinyPubSubForms.Init(app);

            // Init TinyCache
            var cacheFirstPolicy = new TinyCachePolicy().SetMode(TinyCacheModeEnum.CacheFirst).SetFetchTimeout(Settings.Current.FetchTimeout);

            TinyCache.SetCacheStore(new XamarinPropertyStorage());
            TinyCache.SetBasePolicy(cacheFirstPolicy);
        }
Пример #2
0
        public static void Initialize(App app)
        {
            var builder = new ContainerBuilder();

            // Views
            var ass = app.GetType().Assembly;

            builder.RegisterAssemblyTypes(ass)
            .Where(x => x.Name.EndsWith("View", StringComparison.Ordinal));

            // ViewModels
            builder.RegisterAssemblyTypes(ass)
            .Where(x => x.Name.EndsWith("ViewModel", StringComparison.Ordinal));

            builder.RegisterAssemblyTypes(typeof(Core.Services.ShoppingService).Assembly)
            .Where(x => x.Name.EndsWith("Service", StringComparison.Ordinal)).SingleInstance();

            // Navigation
            var navigationHelper = new TinyNavigationHelper.Forms.FormsNavigationHelper(app);

            navigationHelper.RegisterViewsInAssembly(ass);
            builder.RegisterInstance <INavigationHelper>(navigationHelper);

            // Setup translation backend https://github.com/TinyStuff/TinyTranslation for translation backend
            var translator = new TranslationHelper(new CustomTranslationClient());

            //var translator = new TranslationHelper(new System.Uri("http://tinytranslation.azurewebsites.net"), "f17528d1-0dd0-4181-90b8-0853c62178a9");

            ObjectEditor.Translate = (string arg) =>
            {
                Console.WriteLine("Translate from ObjectEditor");
                return(translator.Translate(arg));
            };

            // Register translator
            builder.Register <TranslationHelper>((a) =>
            {
                return(translator);
            }).SingleInstance();

            // Build and set
            var container = builder.Build();
            var resolver  = new AutofacResolver(container);

            Resolver.SetResolver(resolver);

            // Init cache and settings
            TinyCache.TinyCache.SetCacheStore(new XamarinPropertyStorage());
            var cacheFirstPolicy = new TinyCachePolicy().SetMode(TinyCacheModeEnum.FetchFirst).SetFetchTimeout(1600);

            TinyCache.TinyCache.SetBasePolicy(cacheFirstPolicy);

            //// Enable cache for translations
            //var oldMethod = translator.FetchLanguageMethod;
            //translator.FetchLanguageMethod = async (locale) => await TinyCache.TinyCache.RunAsync<TinyTranslation.TranslationDictionary>("trans-" + locale, async () =>
            //{
            //    return await oldMethod(locale);
            //}, new TinyCachePolicy() {
            //    Mode = TinyCacheModeEnum.CacheFirst
            //});

            // Set translator to markup extension
            ansExtension.Translator = translator;

            var lng = translator.CurrentLocale;

            translator.Init("sv");

            // Init TinyMvvm
            TinyMvvm.Forms.TinyMvvm.Initialize();

            var asm = typeof(App).GetTypeInfo().Assembly;

            navigationHelper.RegisterViewsInAssembly(asm);

            // Init TinyPubSub
            TinyPubSubLib.TinyPubSubForms.Init(app);

            // Platform specifics
            Platform?.Initialize(app, builder);
        }