2013-08-17 32 views
0

我正在創建一個便攜式MockGeoLocationWatcher,它可以替代IMvxGeoLocationWatcher的具體實現,直到有一個實際設備。這應該有助於開發和測試需要地理位置的應用程序。MvvmCross將配置傳遞給可配置的插件加載程序

這個插件的插件加載類目前看起來是這樣的:

namespace Pidac.MvvmCross.Plugins.Location 
{ 
    public class PluginLoader : IMvxConfigurablePluginLoader 
    { 
     private bool _loaded; 
     public static readonly PluginLoader Instance = new PluginLoader(); 

     public void EnsureLoaded() 
     { 
      if (_loaded) 
       return; 

      _loaded = true; 


      var locationWatcher = new MockGeoLocationWatcher(); 

      var data = @"<?xml version='1.0' encoding='utf-8'?> 
<WindowsPhoneEmulator xmlns='http://schemas.microsoft.com/WindowsPhoneEmulator/2009/08/SensorData'> 
    <SensorData> 
     <Header version='1' /> 
     <GpsData latitude='48.619934106826' longitude='-84.5247359841114' /> 
     <GpsData latitude='48.6852544862377' longitude='-83.9864059059864' /> 
     <GpsData latitude='48.8445703681025' longitude='-83.7337203591114' /> 
     <GpsData latitude='48.8662561090809' longitude='-83.2393355934864' /> 
     <GpsData latitude='49.0825970371386' longitude='-83.0415816872364' /> 
     <GpsData latitude='49.2621642999055' longitude='-82.7229781716114' /> 
     <GpsData latitude='49.2621642999055' longitude='-82.6021285622364' /> 
     <GpsData latitude='49.2047736379815' longitude='-82.3054977028614' /> 
    </SensorData> 
</WindowsPhoneEmulator>"; 

      locationWatcher.SensorLocationData = data; 
      Mvx.RegisterSingleton(typeof(IMvxGeoLocationWatcher), locationWatcher); 
     } 

     public void Configure(IMvxPluginConfiguration configuration) 
     { 

     } 
    } 

    public class MockLocationWatcherConfiguration : IMvxPluginConfiguration 
    { 
     public static readonly MockLocationWatcherConfiguration Default = new MockLocationWatcherConfiguration(); 

     // ideally, we should use this property to point to a file or string containing location data 
     // this should be configurable outside of code base. 
     public string SensorLocationData { get; set; } 
    } 
} 

我會想通過傳感器的數據,目前硬編碼到所謂的「數據」,通過MockLocationWatcherConfiguration的實例變量,但不知道在哪裏MvvmCross框架期望在調用IMvxConfigurablePluginLoader.Configure(配置)之前加載此插件的配置。理想情況下,我應該通過配置來指定。

我查看了 Json plugin's implementation of PluginLoaded,但在IMvxConfigurablePluginLoader.Configure嘗試進行強制轉換之前,仍然無法確定配置的檢索位置。

任何想法或指針將不勝感激。

TIA。

回答

0

這是覆蓋在https://github.com/slodge/MvvmCross/wiki/MvvmCross-plugins草案wiki頁面 - 見「寫一個可配置的插件」

+0

應通過維基已經顯得有點困難。再次感謝。 –

+0

鏈接被破壞,我找到了一個存檔鏈接:https://github.com/rafaelsteil/MvvmCross-Wiki/blob/master/MvvmCross-plugins.md – Felix