使用Unity

时间:2017-01-18 13:17:38

标签: c# delegates unity-container

尝试使用Unity依赖注入注入属性时遇到此运行时错误: System.InvalidOperationException:类型为Batch的属性HasNext的类型为Func'2,并且不能使用Func`2类型的值注入。

在Batch类中,有一个属性定义为:

    public Func<object, bool> HasNext { get; set; }

我试图使用以下代码设置此属性:

        _container.RegisterType<Func<ConcurrentQueue<QueryDeal>, bool>>
        (
            new InjectionFactory(c => new Func<ConcurrentQueue<QueryDeal>, bool>(name => !c.Resolve<ConcurrentQueue<QueryDeal>>().IsEmpty))
        );

        _container.RegisterType<IContainer, Batch>(Constants.FeedBatch,
            new InjectionConstructor(
                ...
            ),             
            new InjectionProperty("HasNext", _container.Resolve<Func<ConcurrentQueue<QueryDeal>, bool>>())
        );

我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我最终通过纠正类型来实现这一目标:

            new InjectionProperty("HasNext", new Func<object, bool>(_ =>!_container.Resolve<ConcurrentQueue<QueryDeal>>().IsEmpty))