Kentico Cloud自定义ContentLinkUrlResolver对DeliveryClient的循环依赖

时间:2019-03-28 20:08:46

标签: kentico-cloud

我正在尝试将我的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。

1 个答案:

答案 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