Prism 7.1.0 Using app.config to load modules - prism

I am trying to load views and viewmodels in a module using app.config and Prism 7.1.0.279-pre. I cannot find any post anywhere that seems to get this to work. Does anyone have any examples?
I have a basic understanding from MEF when it was early on. I would like to be able to create apps with multiple reusable modules and would like to get this to work.

You should use the ConfigurationModuleCatalog.
Therefore, you need a ModulesConfigurationSection in your app.config named modules. This is where you define the modules to load.
An example is in the documentation.
BTW - Prism 7 has dropped support for MEF. Use a container like unity or dryioc for dependency injection and reserve MEF for plugin system.

Related

Xamarin Forms Customer Control Library

I need to create a reusable Xamarin Forms control that will be used in two separate projects. It does require custom renderers for IOS and Android. The problem is I cannot figure our what kind of project to use to create a reusable custom control library for Xamarin forms.
Every site seems to talk about creating customer controls that can be reusing in the same project. But I need it in a separate project for reuse.
Can someone please point me in the right direction.
Depending what are your needs regarding multi-targeting, using a solution with a shared project of type MSBuild.Sdk.Extras could be very helpful. You can then packed your shared project into a package that you can reference from your apps project and use locally.
Examples that might guide you and shows you the path are known nuget packages that are being used by app developers cross-platforms, just an example Xamarin.Forms.PancakeView.
Related to MSBuild.Sdk.Extras: How to use different base class in custom control depending on platform target?

Consuming a web service with Xamarin forms

I am learning Xamarin Forms, and I have a few questions.
What's the Portable project that appears in demos and tutorials? My project from scratch is not called Portable.
Must I make my own service interface? After I add the Web reference, References.cs has generated classes and methods. Why not just use those methods directly?
When creating the app, make sure you select Xamarin.Forms, as well as Portable Class Library.
The Portable project (aka Portable Class Library, or PCL) is where the shared code goes for your Xamarin.Forms app. For example, your UI, Models, and View Models will go into that project. You mainly need to worry about the iOS and Android projects for Custom Renderers and Dependency Services, to create custom UI or platform-specific functionality that Xamarin.Forms can't do.
As for consuming the service, its not necessary to create a service interface (I assume its a RESTful service), but it will help you in being able to use the service more easily.

Xamarin Forms + Parse: PCL vs Shared Asset Project

I been set the mission to look at Xamarin and its cross plaform / code resuse ability, I come from a iOS/Android background.
I want to aim for the holy grail of one universal front end (basic) and one reusable service layer.
I created my first project as a Xamarin Forms PLC, hit the issue it can not support compiler directives, which seem to be something your going to need. Also I was unable to add Parse package to the PLC. You need to reference it per platform / write code per platform?
I have now created Shared Asset Project, the default setup (new project). This does not allow me to add parse to the shared layer. Some of the examples I see add a new project called service, what type of project is this?
So, my question is, forgetting how many members are in a dev team, which one (PCL, SAP) lets me have a universal backend (parse).
I found a Github sample project that could help you. It can be found here: Sample Parse Project
The link to the xamarin component can be found here: Parse component This Xamarin Component should be able to be added into your project and it should get you started immediately. Also when you add the component to you project you should be able to view sample projects that come along with it.
I would start with the sample project and see what I can do with it, but it should become a lot easier by just adding the Parse component in. This would make it so you could probably use either type of project with some Dependency Injection.

Integrating xamarin, CouchBaseLite, MVVMCross and SyncGateway such that View changes with database

I am working on a xamarin project where i use CouchBase Lite as my Local database. I also want to use MVVMCross library. Could anyone specify where should i include couchbase-Lite library, MVVMCross - hot tuna library(like class library or portable class library or platform specif project) such that view model gets notified about the changes in Couchdatabase.
Basically i want to change the view whenver there is a change in database i want to change the view with mvvmcross. Am using syncgateway to sync with server Couchbase bucket.
I am new to Xamarin, MVVM and CouchBaselite.
I couldnt find any concrete example for all this.
Thanks in advance.
I would perhaps just use the CouchBaseLite Xamarin Component. If you are wanting to access this in your PCL Core project you will probably have to create some sort of wrapper around the component and inject it properly into each platform. You can use the MvvmCross plugins wiki to get you started.
I know this is an old thread, but there's a new MvvmCross plugin for Couchbase, and basically does everything you want. It's in alpha, as of this writing on Nuget, and open source on Github. I was actually looking for the same, and happy to have found it! :)
https://www.nuget.org/packages/MvvX.Plugins.CouchBaseLite.ForestDB
https://github.com/mathieumack/MvvX.CouchBaseLite

How can i use IoC in a asp.net webforms component (DotNetNuke module) without changing the infrastructure?

I'm working on legacy code in a DotNetNuke module, trying to get classes and behaviors under a testing framework: I'm taking this opportunity to follow advice from the "Working effectively with legacy code" book, so what happens is that i'm trying to define areas which can be tested thoroughly and then converted to services. Then i'd like to use an IoC framework for it to work. For now, i've set eyes on Ninject.
However i'm hitting a design problem: as i'm in a DotNetNuke module, i can't really change application-wide structure: for example i can't derive the Application from NinjectHttpApplication. I can't use these suggestions from SO either.
I was thinking about having the Kernel in a static class that my module would set up and then use but from what i've read around it's a very bad idea.
So i'm starting to ask myself if it's possible to use an IoC in an application that hasn't been set up to support it from scratch. If i'm supposed to have a whole dependency tree loaded for each request, how can i rewrite legacy code locally and benefit from IoC? Is there a pattern where IoC use can grow out from very local rewrites?
Even though i'm working with DotNetNuke, any standalone component that can be installed into an independent framework begs the same question. Also i'm not targeting Ninject specifically, if another IoC framework can help in this case i'm willing to consider it.
From my experience, your best bet to get this type of abstraction within the context of DotNetNuke is by using the WebFormsMVP framework. This is really the only sane way I've found to do unit testing in a DNN module, and if memory serves I spent awhile trying to wire up Ninject a year or so ago.
But be warned, it is still WebForms and will never be drop dead simple. And without knowing your existing code base, I'd have a hard time knowing how easy it will be to make the migration.
I have a couple of resources on GitHub that you can check out for reference:
The first is a module template that should act as a solid starting point:
https://github.com/irobinson/WebFormsMvp-DNN-Module-Template
The second is a small example project:
https://github.com/irobinson/BeerCollectionMVP
Depending on the version of DNN you're using, it may or may not already ship with WebFormsMVP, but you should be able to either bundle the dependencies w/ your module or upgrade to the newer version of DNN if that's reasonable.

Resources