Using Dependency Injection in Xamarin for Mac - macos

I am creating a simple application with Xamarin for Mac.
I need to provide a decouple architectural elements into solution, but haven't found any information on dependency injection in Xamarin for Mac.
Xamarin.Forms seems to have an IoC NuGet packages, but it is not possible to add Xamarin.Forms into a Xamarin.Mac project, since the current version of Xamarin.Forms (1.2.2) isn't compatible with .Net 4 targeting projects (Xamarin for Mac by default targets .net 4)
Please point me to some information on IoC in Xamarin for Mac.

There's a pretty good article by Rob Gibbens, a Xamarin University instructor, on using IoC containers in Xamarin projects.
IoC Containers with Xamarin
The examples are using Xamarin.iOS for illustrative purposes but I have to imagine that it could work with any of the Xamarin platform projects.
Personally I am a fan of Autofac in general and have played around with it in Xamarin before and it seems to work fine.

Related

Does Prism for Xamarin Forms support native MacOS applications (I.e. Xamarin.Forms.Mac)?

Prism for Xamarin Forms does support iOS applications, but, as far as I can tell, does not yet support applications for the Mac itself. Two years ago Prism logged this as an issue, but shortly afterward closed it with the comment "Done". If such support does exist, where can I find it documented? If it does not, does the Prism team still expect to add it?
Unable to find any documentation in Prism Library of support for Xamarin.Forms.MacOS.
From this blog post of one of the Prism developers:
Whats New Since 6.3 You may be thinking that NetStandard is great and
all but that isn't really new. As part of Prism updating to Xamarin
Forms 2.3.5, you will now have full support for working with Prism on
macOS applications.
So technically it should work.

Xamarin or Xamarin.Forms for Android and classic Windows?

Is there a way to create a Xamarin or Xamarin.Forms solution that targets Android and classic Windows to produce a Windows 7,8,8.1,10 executable (exe)?
I am not interested in UWP.
Xamarin.Forms will support WPF in the future so you will be able to deploy an EXE file to those platforms. Read more about it here on the blog.
Also, you can always share the business logic, data and other layers with any other .NET application so having an Android app, Windows app and a core project that doesn't depend on Xamarin is perfectly fine.
You can already take a look at the WPF branch of the Xamarin.Forms project on GitHub.

Xamarin Forms and Entity Framework Core NetStandard

Recently Xamarin announced support for NetStandard (see https://releases.xamarin.com/stable-release-cycle-7-service-release-1/) and the recently shipped Entity Framework Core supports NetStandard. There was a recent issue with the SQLite.Native package that has been resolved (see https://github.com/aspnet/EntityFramework/issues/4269) but when I build the Android version of a Xamarin Forms application it appears it does not include all the assemblies in the output that are needed by the Entity Framework and therefore the application will not run and crashes on the first line of EF code to retrieve data. The UWP version appears to work just fine so this seems like an issue with Android (possibly iOS too).
Has anyone run into this and know a way around it so that the compiled Xamarin Forms Android application will run using Entity Framework Core to access a SQLite database?
Thank you in advance.
Here are the steps you can follow.
Create a Xamarin.Forms project.
Convert the PCL project's properties to .NET Standard 1.3
Install Entity Framework Core and other EF Core stuffs
I have prepared a small hello world project at Github Here.
need to use -linkskip to inform compiler not to remove references.

Can not compile after migrating unified api in xamarin forms

We have migrated the xamarin forms project to unified api.
But we have the strange compile error like this:
Could not AOT the assembly '.../iOS/obj/iPhone/Debug/mtouch-cache/Build/Xamarin.Forms.Labs.dll
So I changed the settings in iOS project's options.
In ios Build Tab of Project options(iOS) I changed the "don't link" to "Link all assemblies".
But the app is crashed when it is started.
xamarin version is 5.7.1(build 17).
xamarin forms's version is 1.3.5.6337.
xamarin forms labs's version is 1.0.1.5.
Please help me if you have the experience with this error.
Replace Xamarin.Forms.Labs with XLabs.Forms.
There has been a major refactoring on how the XLabs project is structured so your existing project based on the 1.x.x will break. The reason for the refactoring was simple; separate functionality that does not depend on Xamarin.Forms into different assemblies. This allows the use of functionality like IoC, Serialization and even platform specific services without referencing XF.
To upgrade:
Uninstall any existing Xamarin.Forms.Labs packages from your
project.
Install XLabs.Forms package to your projects (PCL, iOS, Droid & WP). This will update Xamarin.Forms to the latest stable release (1.4.x)
Refactor code to reference the correct namespaces.

MvvmCross as "Native" Libraries

I have a project which greatly depends on ServiceStack, unfortunately the V4 releases, which includes PCL release for most platforms(especially after forking out for a Xamarin Licence), is just way out of my price range as an ISV. I have cloned the MvvmCross code but before I start messing around I would like to know what pitfalls I could run into when attempting to create a Non PCL based version compatible with the platforms I target (Currently Xamarin.Android, WPF and WinRT). The idea would be to able to reuse the code for the WPF project to build Android and WinRT clients.
Does anyone have any pointers?
I don't think there is any problem or pitfall with what you are describing - and I don't think you'll need to fork the MvvmCross source.
You should be able to build your apps as native code, and should then be able to reference the MvvmCross PCL libraries directly from the native libraries you are building - you don't need to rebuild MvvmCross to do this. Plenty of people already use MvvmCross using "file linking" rather than PCLs - it's not the default setup encouraged by the Nuget packages, but it still works fine.

Resources