Xamarin 上的此平台异常不支持操作 iOS
Operation is not supported on this platform exception on Xamarin iOS
我正在使用 DryIoC 容器,在尝试解决其中一种实现时出现以下错误:
Operation is not supported on this platform exception on Xamarin iOS
第一次 resolve 工作正常,但是当我第二次尝试调用 resolve 时,它给出了这个异常。
以下是我的注册方式:
container.Register<IFoo, Foo>(Reuse.ScopedOrSingleton);
解决呼叫:
container.Resolve<IFoo>()
我检查过 Github 中已经报告了一个错误。
根据对该讨论的评论之一,我在下面的代码和之后实现了它,它似乎工作正常,但我不确定设置此规则的目的是什么,设置此规则是否有任何缺点规则。
var container = new Container(rules => rules.WithoutFastExpressionCompiler());
Xamarin iOS 不支持 IL Emit 和 DynamicMethod 编译,这是创建对象图的默认 DryIoc 机制(通过调用已编译的委托)。
但是编译可能会被解释"sacrificing"代替一些编译委托的表现。
牺牲不是那么简单,取决于你的情况,而且 interpretarion 无论如何都用于第一次解决,因为编译本身很昂贵。有关更多详细信息和性能数据,您可以在此处查看:https://github.com/dadhi/DryIoc/issues/199#issuecomment-573291497
旁注:DryIoc 使用自己的专用解释模型,不依赖 System.Linq.Exptessions.Expression.Compile(preferInterpretation: true)
,这使其速度更快。
我正在使用 DryIoC 容器,在尝试解决其中一种实现时出现以下错误:
Operation is not supported on this platform exception on Xamarin iOS
第一次 resolve 工作正常,但是当我第二次尝试调用 resolve 时,它给出了这个异常。
以下是我的注册方式:
container.Register<IFoo, Foo>(Reuse.ScopedOrSingleton);
解决呼叫:
container.Resolve<IFoo>()
我检查过 Github 中已经报告了一个错误。
根据对该讨论的评论之一,我在下面的代码和之后实现了它,它似乎工作正常,但我不确定设置此规则的目的是什么,设置此规则是否有任何缺点规则。
var container = new Container(rules => rules.WithoutFastExpressionCompiler());
Xamarin iOS 不支持 IL Emit 和 DynamicMethod 编译,这是创建对象图的默认 DryIoc 机制(通过调用已编译的委托)。 但是编译可能会被解释"sacrificing"代替一些编译委托的表现。 牺牲不是那么简单,取决于你的情况,而且 interpretarion 无论如何都用于第一次解决,因为编译本身很昂贵。有关更多详细信息和性能数据,您可以在此处查看:https://github.com/dadhi/DryIoc/issues/199#issuecomment-573291497
旁注:DryIoc 使用自己的专用解释模型,不依赖 System.Linq.Exptessions.Expression.Compile(preferInterpretation: true)
,这使其速度更快。