我现有的代码可以在 Caliburn Micro 1.4 上编译并正常工作:
private static readonly Lazy<IShell> shellLazy = new Lazy<IShell>(IoC.Get<IShell>, true);
我删除了 1.4 版本并通过 NuGet 安装了 1.5 版本,并且没有更改任何内容,此行现在会引发错误:
错误 1 'System.Lazy.Lazy(System.Func, System.Threading.LazyThreadSafetyMode)' 的最佳重载方法匹配有一些无效参数 C:\Users\User\Documents\Visual Studio 2012\Projects\Arnova\Src\CShellCore \Shell.cs 35 58 CShellCore
我发现摆脱这个错误的唯一方法是完全避免使用 Lazy<> :
private static readonly IShell shellLazy = IoC.Get<IShell>();
我已经搜索了与 IoC.Get<> 和 Lazy<> 相关的任何内容,以及从 1.4 版到 1.5 版可能发生的变化,但找不到任何东西来解释 Caliburn Micro 在这些版本之间发生了什么变化以及如何解决这个问题。