我正在尝试将我的Kentico Cloud SDK从v7升级到v10。在我刚创建DeliveryClient的新实例以构建要解析的网站网址的服务之前,然后将其传递给我的CustomContentLinkUrlResolver,例如
services.AddSingleton<NavigationProvider>(c => new NavigationProvider(new DeliveryClient(deliveryOptions) {
CodeFirstModelProvider = { TypeProvider = new CustomTypeProvider() }
}, cache));
services.AddSingleton<IDeliveryClient>(c => new CachedDeliveryClient(projectOptions, cache)
{
CodeFirstModelProvider = { TypeProvider = new CustomTypeProvider() },
ContentLinkUrlResolver = new CustomContentLinkUrlResolver(c.GetRequiredService<NavigationProvider>())
});
所以我有这种循环依赖关系,其中DeliveryClient依赖于CustomContentLinkUrlResolver,后者依赖于DeliveryClient。
令人沮丧的是ResolveLinkUrl(ContentLink link)方法没有解析URL所需的信息,因为这些URL是由ContentLink中不可用的项的分类法定义的,这意味着我必须进行另一次查找进行分类的物品。
我不知道如何解决依赖DeliveryClient的CustomContentLinkUrlResolver。
答案 0 :(得分:0)
我希望您的情况正确:
您调用const items = [{amount1:100, amount2:50, name:"ruud"}, {amount1:40,amount2:60,name:"ted"}]
let res = [items.reduce((ac,x) => {
for(let key in x){
if(typeof x[key] === "number"){
if(!ac[key]) ac[key] = 0;
ac[key] += x[key]
}
}
return ac;
},{})]
console.log(res)
实例化为依赖注入容器中的单例,并且此客户端使用的DeliveryClient
需要进行另一个API调用来获取有关项目分类的信息,但是您想使用其他方法CustomContentLinkUrlResolver
的实例,以避免循环依赖于单例实现。
在这种情况下,可以使用DeliveryClientBuilder
中引入的version 8来创建DeliveryClient
的新实例。
DeliveryClient