尝试使用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>>())
);
我如何做到这一点?
答案 0 :(得分:0)
我最终通过纠正类型来实现这一目标:
new InjectionProperty("HasNext", new Func<object, bool>(_ =>!_container.Resolve<ConcurrentQueue<QueryDeal>>().IsEmpty))