【发布时间】:2014-12-20 01:17:37
【问题描述】:
我为 Windows Phone 8.1 和 iOS 开发了 MvvmCross 的自定义插件
它在 iOS 项目中加载,但在 Windows Phone 8.1 中的 manager.EnsurePlatformAdaptionLoaded();
出现错误public class PluginLoader : IMvxPluginLoader
{
public static readonly PluginLoader Instance = new PluginLoader();
public void EnsureLoaded()
{
var manager = Mvx.Resolve<IMvxPluginManager>();
manager.EnsurePlatformAdaptionLoaded<PluginLoader>();
}
}
错误是
“CrossCore.Exceptions.MvxException”类型的异常 发生在 Cirrious.CrossCore.DLL 中但未在用户代码中处理
附加信息:无法加载类型的插件程序集 Confiz.MvvmCross.Plugins.Timer.PluginLoader
我正在使用以下代码在 Windows Phone 8.1 中加载我的插件
public class TimerPluginBootstrap : MvxPluginBootstrapAction<Confiz.MvvmCross.Plugins.Timer.PluginLoader>
{
}
我正在使用 Windows Phone 8.1 和 MvvmCross 3.2.1,以下是更多信息
Confiz.MvvmCross.Plugins.Timer(便携式)
ITTimer.cs
public interface ITimer
{
void Start();
void Stop();
Action CallBackMethod { get; set; }
}
插件加载器.cs
public class PluginLoader : IMvxPluginLoader
{
public static readonly PluginLoader Instance = new PluginLoader();
public void EnsureLoaded()
{
var manager = Mvx.Resolve<IMvxPluginManager>();
manager.EnsurePlatformAdaptionLoaded<PluginLoader>();
}
}
Confiz.MvvmCross.Plugins.Timer.WindowsPhone
MvxWindowsPhoneTimer.cs
public class MvxWindowsPhoneTimer : ITimer
{
private readonly DispatcherTimer timer;
public MvxWindowsPhoneTimer(double kronosApiRecallTimeInMinutes)
{
timer = new DispatcherTimer();
Timer.Interval = TimeSpan.FromSeconds(kronosApiRecallTimeInMinutes);
Timer.Tick += Timer_Tick;
}
void Timer_Tick(object sender, object e)
{
CallBackMethod.Invoke();
}
public DispatcherTimer Timer
{
get { return timer; }
}
public void Start()
{
Timer.Start();
}
public void Stop()
{
Timer.Stop();
}
public Action CallBackMethod { get; set; }
}
插件.cs
public class Plugin : IMvxPlugin
{
public void Load()
{
Mvx.RegisterSingleton<ITimer>(new MvxWindowsPhoneTimer(1));
}
}
【问题讨论】:
-
你能用更多的踪迹更新这个问题,或者更多关于你为插件程序集命名的信息吗?另外,您能否澄清一下您是指 Silverlight WinPhone 8.1 还是 Jupiter/Xaml WinPhone 8.1(将命名混乱归咎于 MS!)
-
@Stuart 如果我没有使用 TimerPluginBootsrap 进行插件加载,只需解决 Mvx.RegisterSingleton
(new MvxWindowsPhoneTimer(1));在我的 WindowsPhone 8.1 setup.cs 类中它可以正常工作 -
您能否澄清一下您是指 Silverlight WinPhone 8.1 还是 Jupiter/Xaml WinPhone 8.1(命名混乱归咎于 MS!)
-
它的 WinPhone 8.1 不是 Sliverlight WinPhone 8.1
标签: xamarin windows-phone-8.1 mvvmcross