what the techniques strategy standard net different code are xamarin.ios servicestack xamarin mvvmcross portable-class-library

xamarin.ios - strategy - what are the different code sharing techniques in xamarin forms



Servicestack monotouch DLL creado utilizando PCL (2)

Puede clonar el proyecto ServiceStack, hacer un proyecto PCL, vincular los archivos, compilar y ver lo que falta. Estoy seguro de que hay una razón por la que ya no hay una PCL, pero si la ejecutas, realiza una solicitud de extracción.

Como está utilizando MvvmCross, otra opción es crear un complemento para su API y luego hacer referencia a las bibliotecas de ServiceStack en los proyectos específicos de la plataforma.

También puede usar MvvmCross RestClient y hacer las mismas llamadas que haría el cliente de ServiceStack.

editar: una cuarta alternativa es usar el nuevo HttpClient''s. El de Xamarin y el otro de MS (si se dirige a Win). Agregue PortableRest y podrá conservar la mayor parte del código en un dispositivo portátil. Lo digo más porque es posible que deba abstraer el HttpClient. He usado este enfoque varias veces y funciona bastante bien. Hay un tenedor de PortableRest que agregó cargas de archivos.

Estoy migrando una solución a MVVMCross, pero es difícil trabajar con las bibliotecas de cliente de ServiceStack.

¿Cómo puedo compilar la DLL del cliente ServiceStack en la biblioteca PCL para usarla en Xamarin Studio, por lo que es multiplataforma?

Aquí no hay nada de particular a menos que me lo haya perdido: https://github.com/ServiceStack


Me encontré con algunos problemas relacionados con .net (por ejemplo, falta la clase Timer en .net 4.5). Así que acabo de crear una biblioteca diferente y luego creé un contenedor para la clase de temporizador. Esta es una forma de hacerlo. Tener su código http en una biblioteca separada haría que el proyecto sea más fácil de mantener.

Un paso más sería usar la inyección de dependencia mvvmcross para crear una instancia de la clase que ha creado en la otra biblioteca. De esa forma, incluso si está instanciando un código que no es PCL, no importa, la cosa simplemente funciona. Sin embargo, tendrá que declarar todas sus interfaces en una biblioteca PCL separada.