在缓存中找不到类型: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 MyInjectingClass 的 Func
对象,检索 每次新个对象。
Guid.NewGuid().ToString()
确保新的 MyInjectingClass 对象被 returned 用于 SimpleIoc.Default.GetInstance<MyInjectingClass>
方法。
我正在 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 MyInjectingClass 的 Func
对象,检索 每次新个对象。
Guid.NewGuid().ToString()
确保新的 MyInjectingClass 对象被 returned 用于 SimpleIoc.Default.GetInstance<MyInjectingClass>
方法。