簡體   English   中英

Xamarin XLabs IOC和相機

[英]Xamarin XLabs IOC and camera

我正在查看https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs嘗試將相機提供給我的應用程序。

我的設置與此相同,但是當我運行我的應用時,調用我的PCL的iOS應用給出了錯誤消息:

IResolver has not been set. Please set it by calling Resolver.SetResolver(resolver) method.

我不知道這意味着什么或我需要什么確切的代碼。 我根本不使用IOC,也不太在意它,但我只是希望我的PCL可以使用此相機。 當我在這里不使用MVC時,如何使此相機可供PCL使用。

如果希望使用ViewModel,則修改構造函數以使用IMediaPicker:

https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs#L62

    public CameraViewModel(IMediaPicker mediaPicker)
    {
        this._mediaPicker = mediaPicker;
    }

刪除設置功能:

https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs#L156-L167

如何將IMediaPicker實現實現到PCL由您決定。 IoC是首選(且簡便)的方式,但您也可以使用其他模式。 一種方法是在ViewModel上定義一個靜態Func<IMediaPicker>屬性,並將其設置在特定於平台的項目中。

IoC容器是完成它的最簡單,最快的方法,它就像在應用程序啟動時添加這些行一樣簡單(例如AppDelegate的FinishedLaunching方法):

var container = new SimpleContainer();
container.Register<IMediaPicker, MediaPicker>();
Resolver.SetResolver(container.GetResolver());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM