我想创建一个扩展方法,该方法将同时应用于Paragraph对象和Text对象。这两种类型都有一个共同的祖先AbstractElement。
我想做的是这样的:
private static AbstractElement ApplyHeaderStyle(this AbstractElement element)
{
return element.AddStyle(new Style().SetFont(FontFactory.CreateAvenir85Heavy()).SetFontSize(7));
}
这样我就可以在我的代码中这样调用它:
new Text("This is some text that I would like as a header").ApplyHeaderStyle();
或
new Paragraph().Add("This is also text I want in that style").AddHeaderStyle();
我该怎么做?我应该避免尝试将其作为可链接的扩展方法吗?
答案 0 :(得分:2)
我通过几次尝试和反复摸索发现了问题:
private static T HeaderStyle<T>(this T element) where T : AbstractElement<T>
{
return element.AddStyle(CreateHeaderStyle());
}