VC ++ / CLI проблема реализации абстрактного метода для c # - PullRequest
1 голос
/ 15 декабря 2010

Я работаю над проектом библиотеки классов 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;

1 Ответ

1 голос
/ 15 декабря 2010

Позор! Позор! Позор! Мне стыдно! :) Это моя ошибка!

Я разобрался .. Источник проблемы - класс 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...