【问题标题】:Operation is not supported on this platform exception on Xamarin iOSXamarin iOS 上此平台异常不支持操作
【发布时间】:2020-05-06 14:08:48
【问题描述】:

我正在使用 DryIoC 容器,在尝试解决其中一种实现时出现以下错误:

Xamarin iOS 上此平台异常不支持操作

第一次解析工作正常,但是当我第二次尝试调用解析时,它给出了这个异常。

以下是我的注册方式:

container.Register<IFoo, Foo>(Reuse.ScopedOrSingleton);

解决呼叫:

container.Resolve<IFoo>()

我检查了Github 中已经报告了一个错误。

根据该讨论中的一个 cmets,我在下面的代码中实现了,之后,它似乎工作正常,但我不确定设置此规则的目的是什么,设置此规则是否有任何缺点。

var container = new Container(rules => rules.WithoutFastExpressionCompiler());

【问题讨论】:

    标签: c# .net xamarin inversion-of-control dryioc


    【解决方案1】:

    Xamarin iOS 不支持 IL Emit 和 DynamicMethod 编译,这是创建对象图的默认 DryIoc 机制(通过调用编译的委托)。 但是编译可能会被解释“牺牲”一些编译的委托性能所取代。 牺牲不是那么简单,取决于你的情况,而且解释还是用于第一次解决,因为编译本身是昂贵的。有关更多详细信息和性能数据,您可以查看此处:https://github.com/dadhi/DryIoc/issues/199#issuecomment-573291497

    旁注:DryIoc 使用自己专门的解释模型,不依赖于System.Linq.Exptessions.Expression.Compile(preferInterpretation: true),这使其速度更快。

    【讨论】:

    • 我已经用更详细和结构化的信息更新了评论。
    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多