Я работаю над проектом библиотеки классов PDF.Я создаю базовый абстрактный класс для всего процесса вывода ».
вот код:
public ref class PDFPrinter
{
internal:
int index;
SPDFPrinter* p;
public:
PDFPrinter();
virtual property int HorizontalDPI { int get(){ return 72; } }
virtual property int VerticalDPI { int get(){ return 72; } }
virtual property bool UseMediaBox { bool get(){ return true; } }
virtual property bool CropPage { bool get(){ return true; } }
virtual property Second::PDF::PageRotation PageRotation
{ Second::PDF::PageRotation get()
{return Second::PDF::PageRotation::Rotate0; }
}
virtual property bool IsUpsideDownCoordinateSystem { bool get() = 0; }
virtual property bool CanUseDrawChar { bool get() = 0; }
virtual property bool IsType3CharsInterpretted { bool get() = 0; }
virtual property bool CanUseTilingPatternFill { bool get() = 0; }
virtual property bool CanUseShadedFills{ bool get() = 0; }
virtual property bool CanUseDrawForm{ bool get() = 0; }
virtual property bool CanResolveText { bool get() = 0; }
virtual property bool CanCreateAntialiasedVectors { bool get() = 0; }
virtual bool CanDrawPageSlice(PDFPage page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;
};
и вот метаданные:
using System;
using System.Drawing;
namespace Second.PDF
{
public abstract class PDFPrinter
{
public PDFPrinter();
public abstract bool CanCreateAntialiasedVectors { get; }
public abstract bool CanResolveText { get; }
public abstract bool CanUseDrawChar { get; }
public abstract bool CanUseDrawForm { get; }
public abstract bool CanUseShadedFills { get; }
public abstract bool CanUseTilingPatternFill { get; }
public virtual bool CropPage { get; }
public virtual int HorizontalDPI { get; }
public abstract bool IsType3CharsInterpretted { get; }
public abstract bool IsUpsideDownCoordinateSystem { get; }
public virtual PageRotation PageRotation { get; }
public virtual bool UseMediaBox { get; }
public virtual int VerticalDPI { get; }
public abstract bool CanDrawPageSlice(PDFPage page, PointF resolution,
PageRotation rotation, Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting);
}
}
при попыткеиспользовать этот класс в C # следующим образом:
class Printer : PDFPrinter
{
public override bool CanCreateAntialiasedVectors
{
get { throw new NotImplementedException(); }
}
public override bool CanResolveText
{
get { throw new NotImplementedException(); }
}
public override bool CanUseDrawChar
{
get { throw new NotImplementedException(); }
}
public override bool CanUseDrawForm
{
get { throw new NotImplementedException(); }
}
public override bool CanUseShadedFills
{
get { throw new NotImplementedException(); }
}
public override bool CanUseTilingPatternFill
{
get { throw new NotImplementedException(); }
}
public override bool IsType3CharsInterpretted
{
get { throw new NotImplementedException(); }
}
public override bool IsUpsideDownCoordinateSystem
{
get { throw new NotImplementedException(); }
}
public override bool CanDrawPageSlice(PDFPage page,
System.Drawing.PointF resolution, PageRotation rotation,
System.Drawing.Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting)
{
throw new NotImplementedException();
}
}
Я получаю странные ошибки:
Ошибка 1 'Second.PDFLib.CSharp.Test.Printer' не реализует наследуетсяабстрактный член 'Second.PDF.PDFPrinter.CanDrawPageSlice ()' C: \ Projects \ Visual Studio \ test \ Second.PDFLib.CSharp.Test \ Program.cs 8 11 Second.PDFLib.CSharp.Test
Ошибка2 'Second.PDFLib.CSharp.Test.Printer.CanDrawPageSlice (Second.PDF.PDFPage, System.Drawing.PointF, Second.PDF.PageRotation, System.Drawing.Rectangle, bool, bool, bool)': не найдено подходящего методапереопределить C: \ Projects \ Visual Studio \ test \ Second.PDFLib.CSharp.Test \ Program.cs 51 30 Second.PDFLib.CSharp.Test
Есть ли у вас идеи исправить эти ошибки?
Спасибо
PS: только этот абстрактный метод (CanDrawPageSlice) генерирует ошибки.Без этого метода нет проблем.
РЕДАКТИРОВАТЬ
Позор!Позор!Позор!Мне стыдно!:) Это моя ошибка!
Я понял ... Источник проблемы - класс c ++
Я забыл использовать здесь оператор верхнего уровня (^) (страница PDFPage)
virtual bool CanDrawPageSlice(PDFPage page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;
должно быть как:
virtual bool CanDrawPageSlice(PDFPage^ page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;