我正在 MVVMLight SimpleIoc 中注册类型,
SimpleIoc.Default.Register<MyInjectingClass>();
然后我将这种类型的构造函数注入为Func
,
public class MyConsumerClass
{
readonly Func<MyInjectingClass> _injectingClassFactory;
public MyConsumerClass(Func<MyInjectingClass> injectingClassFactory)
{
_injectingClassFactory = injectingClassFactory;
}
}
但是在运行时,我遇到了这个错误,
在缓存中找不到类型: System.Func`1 [[<...>。MyInjectingClass, <...>,版本= 1.0.0.0,文化=中性,PublicKeyToken =空]]。
如何构造函数将类型作为Func
注入?
注意:
我正在Xamarin.IOs项目中执行此操作。 我用于MVVMLight SimpleIoc的NuGet是this。
答案 0 :(得分:0)
我发现,要注入类型为Func
,则必须
Func
(使用上述注册类型)也就是说,
SimpleIoc.Default.Register<MyInjectingClass>(); // should happen first
SimpleIoc.Default.Register<Func<MyInjectingClass>>(
() => () => SimpleIoc.Default.GetInstance<MyInjectingClass>(
Guid.NewGuid().ToString()
));
只需简单地注册该类型,就可以告诉它返回 MyInjectingClass 的Func
对象,该对象每次都检索一个 new 对象。>
Guid.NewGuid().ToString()
确保为SimpleIoc.Default.GetInstance<MyInjectingClass>
方法返回一个新的 MyInjectingClass 对象。