Xamarin Formulir untuk pengembang Windows Phone – Ketergantungan injeksi dengan MVVM Cahaya

Dalam posting sebelumnya kita melihat bagaimana Xamarin Bentuk menyediakan cara mudah untuk menangani injeksi ketergantungan, sehingga cara yang berbeda tentang bagaimana fungsi-fungsi tertentu dikendalikan pada setiap platform dapat mendukung. Dengan cara ini Anda dapat menggunakan antarmuka umum di proyek bersama Anda dan kemudian memiliki tiga implementasi konkret yang berbeda dari antarmuka ini, satu untuk setiap platform. Pada contoh sebelumnya, kita menggunakan layanan Pop , yang merupakan kelas yang digunakan untuk menampilkan popup bagi pengguna dengan menggunakan API spesifik untuk setiap platform.

Dalam posting ini kita akan melihat bagaimana pendekatan yang dilakukan dalam proyek MVVM MVVM menggabungkan cahaya.


Sebuah proyek dua kontainer ketergantungan injeksi

Ketika kita berbicara tentang bagaimana untuk membuat proyek Formulir Xamarin dengan MVVM Cahaya, kita telah melihat bahwa fungsi yang disebut oleh Laurent Bugnion Penawaran kontainer ketergantungan injeksi SimpleIoC. Gunakan ketergantungan kontainer sangat berguna dalam aplikasi MVVM, karena jauh lebih mudah untuk mengubah pelaksanaan kelas, kita akan menggunakan ViewModel. Dalam posting sebelumnya, kita telah melihat bahwa kami dapat melakukannya dengan mudah dengan menggunakan kode yang sesuai dengan berikut:

 melihat masyarakat Main Model () {popup layanan IPopupService container.Resolve = & amp; amp; lt; IPopupService & amp; amp; gt; (); popupService.ShowPopup ("Contoh Judul", "pesan Sample"); } 

Tapi kode ini masih mengharuskan Anda pergi ke setiap kelas dan manual mengacu pada implementasi praktis oleh wadah (dalam contoh ini, kita menggunakan unit sebagai ketergantungan perpustakaan injeksi, jadi kami menggunakan Longgar & amp; amp; lt; T & amp; amp; gt; () Cara Unity Kontainer class

Terima kasih untuk injeksi ketergantungan, ada cara cerdas untuk ini lakukan: oleh .. public class ViewModel locator {statis ViewModel Locator () {ServiceLocator.SetLocatorProvider (() = & amp; amp; gt;: baik viewmodel dan layanan dalam wadah, seperti dalam contoh berikut

<"sikat CSharp "pre class => daftar; SimpleIoc DEFAULT) SimpleIoc.Default.Register & amp; amp; lt; IPopupService, Popup Service & amp; amp; gt; (); SimpleIoc.Default.Register & amp; amp; lt; & amp Lihat Utama Model ; amp; gt; ();} /// & amp; amp; lt; summary & amp ;. amp; gt; /// /// Mendapat properti utama & amp; amp; lt; / summary & amp; amp; gt; [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1822: MarkMembersAsStatic" Alasan = ". Ada kebutuhan untuk ini anggota data non-statis untuk tujuan ikatan")] lihat Umum Utama Model Head {mendapatkan {kembali Layanan Locator Current.GetInstance & amp; amp;. Lt; Lihat Utama Model & amp; amp; gt; ();}}}

Seperti yang Anda lihat, View Model Locator definisi kita tidak hanya memiliki View Main Model (seperti yang kita di posting sebelumnya) tetapi juga layanan Popup kelas terdaftar terhubung ke IPopupService antarmuka. Dengan kode ini, kita sekarang dapat merujuk pada layanan Popup kelas hanya dengan menambahkan IPopupService parameter dalam ViewModel kontraktor, seperti dalam berikut Contoh:

 public class Main View Model: View Model Basis {readonly pribadi IPopupService _popupService; Melihat masyarakat Utama Model (IPopupService pop-service) {_popupService = popup layanan;}} 

mekanisme injeksi ketergantungan memungkinkan untuk memasukkan injeksi otomatis ke dalam IPopupService parameter, pelaksanaan beton ( layanan Popup ) kelas kami telah terdaftar kontainer di View Model Locator .


Cara menggabungkan dua pendekatan

Tapi di posting sebelumnya, kita telah melihat bahwa Xamarin Bentuk menawarkan pendekatan lain untuk menangani ketergantungan injeksi: dengan dekorasi pelaksanaan beton dari interface (dalam kasus kami, layanan Popup kelas) dengan atribut yang memungkinkan kita untuk menggunakan antarmuka tunggal untuk proyek bersama kami dengan tiga implementasi yang berbeda dari masing-masing proyek tertentu Platform. Dengan cara ini kita bisa menghadapi kenyataan bahwa beberapa fitur yang umum dalam platform apapun (seperti menampilkan popup atau geo menemukan pengguna), tetapi mereka dilakukan dengan API dan pendekatan yang berbeda.

Bagaimana kita dapat menggabungkan pendekatan ini dengan standar, jadi kami mengambil yang terbaik dari kedua dunia? Tujuan kami adalah untuk wadah MVVM Cahaya secara otomatis menyuntikkan setiap viewmodel tertentu layanan Popup komitmen, kami telah termasuk dalam semua platform yang proyek tertentu. Sangat mudah berkat fitur yang ditawarkan lebih atau kurang perpustakaan injeksi ketergantungan, metode untuk mendeteksi contoh spesifik dari kelas di pemegang. Dengan cara ini, jika kita membutuhkan implementasi konkret dari kelas, wadah akan kembali kepada kita bahwa contoh spesifik, bukan membuat yang baru dengan cepat.

Kode berikut memperlihatkan bagaimana kita bisa mencapai tujuan kami dengan menggabungkan kode yang telah kita lihat di posting ini dan sebelumnya:

 public class ViewModel {static ViewModel Locator Locator () {ServiceLocator.SetLocatorProvider (() = & amp; amp; gt; SimpleIoc DEFAULT); Popup layanan IPopupService DependencyService.Get = & amp; amp; lt; IPopupService & amp; amp; gt; (); SimpleIoc.Default.Register & amp; amp; lt; IPopupService & amp; amp; gt; (() = & Amp; amp; gt; popup layanan); SimpleIoc.Default.Register & amp; amp; lt; Main View Model & amp; amp; gt; (); } /// & Amp; Amp; Lt; Ringkasan & amp; amp; gt; /// Mendapat properti utama. /// & Amp; Amp; Lt; / Ringkasan & amp; amp; gt; [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1822: MarkMembersAsStatic" Alasan = ". Ada kebutuhan untuk ini anggota data non-statis untuk tujuan ikatan")] lihat Umum Utama Model Head {mendapatkan {return Layanan Locator. Saat getInstance & amp; amp;. lt; Lihat Utama Model & amp; amp; gt; ();}}} 

Berbeda dengan contoh sebelumnya, yang kami mencatat pada umumnya layanan Popup class IPopupService antarmuka, dalam hal ini kami mendeteksi kasus tertentu, kami telah menggunakan DependencyService kelas yang ditawarkan oleh bentuk Xamarin. Dengan cara ini kita memastikan bahwa IPopupService Obyek kita mendapatkan imbalan adalah implementasi khusus dari platform di mana aplikasi berjalan, maka kita pergi ke acara ini di SimpleIoc termasuk wadah dengan melewatkan sebagai parameter untuk Mendaftar & amp; amp; lt; T & amp; amp; gt; () Cara

Ini semua .. Sekarang, di View Main Model , wadah secara otomatis menyuntikkan dalam parameter konstruktor, pelaksanaan yang benar kami saat ini Platform

paket

Dalam posting ini kita telah melihat metode injeksi ketergantungan standar (yang berguna untuk mengendalikan Dependensi View Model) dengan Xamarin menggabungkan Formulir satu (yang berguna untuk mengendalikan implementasi platform-spesifik dari fungsi yang sama). Anda dapat bermain dengan sampel bekerja dengan men-download kode sumber yang tersedia di GitHub: https://github.com/qmatteoq/XamarinFormsSamples

Mario Balotelli dipotong dari merokok dan gaya rambut boros

Mario Balotelli dikatakan telah menerima perilaku klausul yang baik dalam kontraknya dengan AC Milan, untuk menghentikannya dari mendapatkan gaya rambut dan pakaian mewah dan bergabung dengannya untuk gaya hidup sehat .

harian olahraga Italia Gazzetta dello Sport, Rabu, mengatakan aturan klausul kepala eksekutif klub Adriano Galliani yang berlaku untuk orang-orang yang telah telah berbasis di Angkatan Udara Italia.

25 tahun, berulang kali dikritik karena tingkat karyanya miskin diatur untuk kembali ke Milan hanya setahun setelah meninggalkan Liverpool, di mana ia memiliki musim yang suram.

 Balotelli-rambut-cut

Dia menjalani tes medis di Milan Selasa menempatkan sebelum pinjaman yang diharapkan, meskipun kesepakatan itu belum resmi dikonfirmasi.

Menurut Gazzetta harus Mario Balotelli untuk tidak merusak citra klub dan yang Twitter, Facebook dan Instagram posting akan diawasi secara ketat.

 Mario Balotelli dilarang merokok dan boros gaya rambut dengan klub baru AC Milan

Dia juga akan dikeluarkan dari gaya rambut boros dan pakaian dari merokok dan mengunjungi klub malam dan harus datang tepat waktu untuk melatih. Minumnya juga akan terbatas.

Balotelli pertama kalinya di Milan relatif sukses dan damai dengan tingkat skor terhormat, meskipun ada beberapa pelanggaran. Baliotelli mungkin akhirnya menemukan lawan!

Pesan Mario Balotelli dipotong dari merokok dan gaya rambut boros pertama kali muncul di Yeast Plaza .com.

Belajar melukis vs Sketsa belajar

Sketsa Lab merupakan konferensi tahunan desain di San Jose, Kosta Rika, yang mempromosikan desain dan komunikasi visual teknik untuk mahasiswa dan profesional muda di industri kreatif. Setiap tahun, sketsa Lab mencakup dasar-dasar cara menggambar, dan tahun ini saya menjadi tuan rumah pertemuan yang dieksplorasi MENGAPA sketsa alias digunakan sketsa atau seperti yang saya suka menyebutnya, “Sketches untuk belajar.” Berikut adalah lima pelajaran tahun ini & amp; amp; nbsp; Sesi:

sketsa peserta Lab outline ‘ belajar “

1. Sketsa adalah bentuk komunikasi & amp; amp; nbsp;

Sketch mengkomunikasikan pikiran, hal yang nyata, perasaan dan ide-ide inovatif tanpa kata-kata. Sama seperti bahasa verbal, sketsa abjad diatur dan disusun kembali dalam dialog visual dan bahkan lebih koheren cerita dengan tujuan yang berbeda.


2. sketsa memiliki public

Penonton Anda akan menjadi tujuan sketsa Anda, yang pada akhirnya menginformasikan akan menguraikan jenis gaya atau tingkat kesetiaan. Sebagai contoh, jika kita berada dalam sesi brainstorming dengan teman sekelas atau rekan-rekan kami, garis ideal adalah gratis dan terbuka untuk interpretasi. Ini harus menangkap gagasan dalam beberapa aturan gerakan tanpa terlalu banyak detail, cara kolega Anda dapat membangun ide asli Anda dan membuatnya lebih baik. Tetapi jika sketsa Anda terlalu ketat, kaku dan terlihat selesai di sana, sehingga orang lain tidak akan merasa terdorong untuk membangun.

” Dialog dengan sketsa “dari Bill Buxton adalah percakapan non-verbal menggambarkan dan, pada akhirnya, aliran dari brainstorming yang ideal.

3. Outline adalah bahasa universal

Dalam sketsa Lab, kita biasanya memiliki campuran Inggris dan Amerika Latin peserta, jadi tentu saja ada beberapa kata atau frasa yang tidak semua orang bisa memahami dalam bahasa kedua mereka. Salah satu cara untuk memastikan bahwa semua peserta memahami dengan cara sebuah foto atau sketsa ide tangkapan-bukti dalam bentuk yang paling murni yang membuat sketsa adalah bahasa universal kita.

peserta Sketch Lab berkomunikasi secara visual

4. Outline irama

Kecepatan yang kita menguraikan dapat sangat mempengaruhi sifat produksi atau konten yang kita buat. Sebagai aturan, ritme sketsa biasanya sama lebih banyak kekuatan gerakan cepat dan sporadis yang berasal dari perasaan dan emosi. Sementara irama sketsa lambat sesuai dengan ekspor lebih pragmatis karena pendekatan otak. Apapun, setiap ritme sketsa memiliki superpower sendiri. Sebagai contoh, cepat dan lepas gaya cocok lebih ke eksplorasi cetakan dan lebih lambat dan gaya ketat memungkinkan otak Anda untuk menginformasikan dan memecahkan masalah secara real time untuk mengikuti irama gambar. Buku

Sketsa Lab co-founder, Jose Gamboa, menunjukkan sketsa irama menggunakan metodologi aerobik Sketch nya

5. Sketsa belajar

juga dikenal sebagai “cepat” adalah tentang mengembangkan ide-ide yang bermakna dalam bentuk iterasi oleh kelimpahan ide pakai. Melalui proses ini, menggambar hanya kendaraan untuk tank. Ingat, belajar bagaimana membuat sketsa hanya skill, tapi sketsa untuk belajar adalah dengan menggunakan keterampilan ini untuk membuat sesuatu yang berarti. Buku

“sketsa belajar” latihan di mana peserta membuat 10 sketsa kedua pada posting It di chorreador sebuah ( Kosta Rika kopi) desain evolusi.