我需要覆盖ContentAreaRenderer以在所有模板上实现DisplayOptions。
我需要在ContentArea中呈现显示选项,以便它会影响所有模板。
出了什么问题 我收到了错误 “ContentFragmentAttributeAssembler已过时使用IContentAreaItemAttributeAssembler” 当我改变类型时我得到一个问题,因为基础构造函数不采用en IContentAreaItemAttributeAssembler而是过时的ContentFragmentAttributeAssembler
public class ContentAreaRendererWithDisplayOptionWithCss : ContentAreaRenderer
{
private readonly DisplayOptions _displayOptionsOwn;
private readonly IContentRepository _contentRepositoryOwn;
public ContentAreaRendererWithDisplayOptionWithCss()
: this(
ServiceLocator.Current.GetInstance<IContentRenderer>(),
ServiceLocator.Current.GetInstance<TemplateResolver>(),
ServiceLocator.Current.GetInstance<IContentAreaItemAttributeAssembler>(),
ServiceLocator.Current.GetInstance<IContentRepository>(),
ServiceLocator.Current.GetInstance<DisplayOptions>())
{
}
public ContentAreaRendererWithDisplayOptionWithCss(
IContentRenderer contentRenderer,
TemplateResolver templateResolver,
IContentAreaItemAttributeAssembler attributeAssembler,
IContentRepository contentRepository,
DisplayOptions displayOptions)
: base(contentRenderer,
templateResolver,
attributeAssembler,
contentRepository,
displayOptions)
{
_displayOptionsOwn = displayOptions;
_contentRepositoryOwn = contentRepository;
}
}
答案 0 :(得分:0)
也许您需要重新排列属性。在我看来,新的构造函数确实采用了IContentAreaItemAttributeAssembler:
在您的示例中,您没有传递IContentAreaLoader,它应该是基本构造函数中的最后一个参数,而不是您的display DisplayOptions。
public ContentAreaRendererWithDisplayOptionWithCss(
IContentRenderer contentRenderer,
TemplateResolver templateResolver,
IContentAreaItemAttributeAssembler attributeAssembler,
IContentRepository contentRepository,
IContentAreaLoader contentAreaLoader,
DisplayOptions displayOptions)
: base(contentRenderer,
templateResolver,
attributeAssembler,
contentRepository,
contentAreaLoader)
{
_displayOptionsOwn = displayOptions;
_contentRepositoryOwn = contentRepository;
}