将 Java 转换为 C# - 在实例化时覆盖
Converting Java to C# - Override on Instantiation
我在将以下代码从 Java 转换为 C# 时遇到困难。
this.document.add(new VerticalPositionMark() {
@Override
public void draw(final PdfContentByte canvas, final float llx, final float lly, final float urx, final float ury, final float y)
{
final PdfTemplate createTemplate = canvas.createTemplate(50, 50);
Main.this.tocPlaceholder.put(title, createTemplate);
canvas.addTemplate(createTemplate, urx - 50, y);
}
});
我不太确定是否可以在 C# 中重写实例化。如果没有,是否有办法复制代码来实现所需的功能?
C# 没有我们在 Java 中知道的匿名 classes(它们不能扩展其他 classes 或实现接口)。我建议您使用 Lambda 表达式,但由于您使用的框架不是一个选项。
考虑您的起始 Java 代码如下,它将匿名内部 class 提取到命名的 class.
public class ContextClass
{
public void ContextMethod()
{
this.document.add(new CustomVerticalPositionMark(title, this.tocPlaceholder));
}
}
class CustomVerticalPositionMark extends VerticalPositionMark
{
final String title;
final PlaceHolder tocPlaceholder;
CustomVerticalPositionMark(String title, PlaceHolder tocPlaceholder)
{
this.title = title;
this.tocPlaceholder = tocPlaceholder;
}
@Override
public void draw(final PdfContentByte canvas, final float llx, final float lly, final float urx, final float ury, final float y)
{
final PdfTemplate createTemplate = canvas.createTemplate(50, 50);
tocPlaceholder.put(title, createTemplate);
canvas.addTemplate(createTemplate, urx - 50, y);
}
}
我在将以下代码从 Java 转换为 C# 时遇到困难。
this.document.add(new VerticalPositionMark() {
@Override
public void draw(final PdfContentByte canvas, final float llx, final float lly, final float urx, final float ury, final float y)
{
final PdfTemplate createTemplate = canvas.createTemplate(50, 50);
Main.this.tocPlaceholder.put(title, createTemplate);
canvas.addTemplate(createTemplate, urx - 50, y);
}
});
我不太确定是否可以在 C# 中重写实例化。如果没有,是否有办法复制代码来实现所需的功能?
C# 没有我们在 Java 中知道的匿名 classes(它们不能扩展其他 classes 或实现接口)。我建议您使用 Lambda 表达式,但由于您使用的框架不是一个选项。
考虑您的起始 Java 代码如下,它将匿名内部 class 提取到命名的 class.
public class ContextClass
{
public void ContextMethod()
{
this.document.add(new CustomVerticalPositionMark(title, this.tocPlaceholder));
}
}
class CustomVerticalPositionMark extends VerticalPositionMark
{
final String title;
final PlaceHolder tocPlaceholder;
CustomVerticalPositionMark(String title, PlaceHolder tocPlaceholder)
{
this.title = title;
this.tocPlaceholder = tocPlaceholder;
}
@Override
public void draw(final PdfContentByte canvas, final float llx, final float lly, final float urx, final float ury, final float y)
{
final PdfTemplate createTemplate = canvas.createTemplate(50, 50);
tocPlaceholder.put(title, createTemplate);
canvas.addTemplate(createTemplate, urx - 50, y);
}
}