代码之家  ›  专栏  ›  技术社区  ›  Rizan Zaky

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

  •  0
  • Rizan Zaky  · 技术社区  · 6 年前

    MVVMLight简单化 ,

    SimpleIoc.Default.Register<MyInjectingClass>();
    

    Func ,

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

    但是在 错误 ,

    System.Func`1[[<>。我的注入类, <>,版本=1.0.0.0,区域性=neutral,PublicKeyToken=null]]。

    如何将类型作为 功能 ?

    注:

    this .

    1 回复  |  直到 6 年前
        1
  •  0
  •   Rizan Zaky    6 年前

    我发现,注入一个类型作为 Func ,那么你必须

    • 先注册类型
    • 然后注册为 (使用上述注册类型)

    也就是说,

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

    该类型的注册方式很简单,告诉它返回一个 MyInjectingClass类 ,检索 新的

    Guid.NewGuid().ToString() 确保一个新的 MyInjectingClass类 SimpleIoc.Default.GetInstance<MyInjectingClass>

    推荐文章