在缓存中找不到类型:System.Func 用于使用 MVVMLight SimpleIoc 将类型作为 Func 注入

Type not found in cache: System.Func for injecting a type as a Func using MVVMLight SimpleIoc

我正在 MVVMLight SimpleIoc,

中注册一个类型
SimpleIoc.Default.Register<MyInjectingClass>();

然后我将这种类型的构造函数注入作为 Func,

public class MyConsumerClass
{
    readonly Func<MyInjectingClass> _injectingClassFactory;

    public MyConsumerClass(Func<MyInjectingClass> injectingClassFactory)
    {
        _injectingClassFactory = injectingClassFactory;
    }
}

但是在运行时,我得到这个错误

Type not found in cache: System.Func`1[[<...>.MyInjectingClass, <...>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].

构造函数如何将类型作为 Func 注入?

注:

我正在 Xamarin.IOs 项目中做这件事。 我用于 MVVMLight SimpleIoc 的 NuGet 是 this.

我发现,要将类型注入 Func,则必须

  • 先注册类型
  • 然后注册为Func(消耗上面注册的类型)

SimpleIoc.Default.Register<MyInjectingClass>(); // should happen first

SimpleIoc.Default.Register<Func<MyInjectingClass>>(
    () => () => SimpleIoc.Default.GetInstance<MyInjectingClass>(
        Guid.NewGuid().ToString()
    ));

类型只是以一种方式注册,告诉它 return MyInjectingClassFunc 对象,检索 每次新个对象。

Guid.NewGuid().ToString() 确保新的 MyInjectingClass 对象被 returned 用于 SimpleIoc.Default.GetInstance<MyInjectingClass> 方法。