2010-12-15 14 views
1

私はpdfクラスライブラリプロジェクトに取り組んでいます。すべての出力プロセスに基本抽象クラスを作成します。ここ VC++/CLIの抽象メソッド実装の問題C#

はコードです:

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; 

    }; 

、ここでのメタデータである:私が得る

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(); 
    } 
} 

:私はこのようなC#で、このクラスを使用しようとすると

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); 
    } 
} 

この奇妙なエラー:

エラー1 'Second.PDFLib.CSharp.Test.Printer' が抽象的継承され実装されていない メンバー 'Second.PDF.PDFPrinter.CanDrawPageSlice()' C:のVisual Studioの \テスト\プロジェクト\ \ 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、 [適切なメソッドが見つからない] C:\ Projects \ Visualをオーバーライドする Studio \ test \ Second.PDFLib.CSharp.Test \ Program.cs 51 30 Second.PDFLib.CSharp.Test

このエラーを解決するにはどうすればよいですか?これだけ抽象メソッド(CanDrawPageSlice)エラーを生成します。

P.Sはありがとうございます。この方法がないと問題はありません。

EDIT

恥を知れ!恥!恥!私には恥ずべき! :)それは完全に私の間違いです!

私は..問題のソースは、それはようにする必要があり、私はここでトップレベルの演算子(^)を使用するのを忘れ++クラス

(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; 

はC考え出し:

virtual bool CanDrawPageSlice(PDFPage^ page, 
    System::Drawing::PointF resolution, Second::PDF::PageRotation rotation, 
    System::Drawing::Rectangle slice, bool useMediaBox, 
    bool cropEnabled, bool isPrinting) = 0; 
+0

overrideを入力し、VSにパラメータリストを入力させるか、自分で入力したかによってオーバーライドを生成しましたか?最初の4つのパラメータに対して、基本クラスが異なるクラスを取得する可能性はありますか? –

+0

ちょうど "実装抽象クラス 'PDFPrinter'"オプション..私はそれが自動生成されたことを意味します。 –

+0

あなたの解決策を取って、あなた自身の質問に答え、正しい答えとしてそれを選択してください。ちょっと奇妙に思えるかもしれませんが、これはこのための標準的な手順です。 – Will

答えて

1

恥ずかしい!恥!恥!私には恥ずべき! :)それは完全に私の間違いです!

私は..問題のソースは、それはようにする必要があり、私はここでトップレベルの演算子(^)を使用するのを忘れ++クラス

(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; 

はC考え出し:

virtual bool CanDrawPageSlice(PDFPage^ page, 
    System::Drawing::PointF resolution, Second::PDF::PageRotation rotation, 
    System::Drawing::Rectangle slice, bool useMediaBox, 
    bool cropEnabled, bool isPrinting) = 0;