SimpleInjector无法加载ConditionalHashset类型

时间:2016-07-01 19:04:04

标签: xamarin xamarin.ios simple-injector

错误非常简单:

System.TypeLoadException: Could not load type 'ConditionalHashSet`1' from assembly
'/Users/MYUSERNAME/Library/Developer/CoreSimulator/Devices/AFD44E36-8A75-4400-B431-
CA1B11C6E3D1/data/Containers/Bundle/Application/
2F74402A-A942-4912-91D6-A546BE8B4EEF/ECCiOS.app/.monotouch-64/SimpleInjector.dll'.

当我尝试创建容器时会发生这种情况:

DIContainer = new Container();

我试过版本:

  • 3.1.4
  • 3.2.0 Alpha

由于与新版本的Xamarin.Forms冲突,我无法使用3.1.5版。

导致此问题的原因是什么?我应该如何尝试调试它?

1 个答案:

答案 0 :(得分:0)

ConditionalHashSet<T>是Simple Injector库中的内部类型。它无法加载的原因是因为它依赖于System.Runtime.CompilerServices.ConditionalWeakTable<TKey, TValue>应该是mscorlib的一部分,但在Xamarin.Forms中似乎缺少这种类型。这实际上很奇怪,因为ConditionalWeakTable<TKey, TValue>应该可用,因为它是Xamarin.Forms应该支持的.NET的PCL子集的一部分。